David,
Good question. The grammar was made to be "easy", i.e. it's simpler to right a grammar for an arbitrary number of arguments. The only functions available, however, have a fixed number of arguments, and you must type check those functions. As such, if a program uses "rsq", then it is not acceptable for "rsq" to take 0 arguments, nor is it acceptable for it to take 10 arguments. It must take exactly as many arguments are in the spec, all of which must have the correct type.
TL;DR: type check according to the pre-defined functions; the grammar generates a "bigger" language than what can be compiled.