function arguments
When functions are called, 0 to 16 values are passed to them.  Each of these arguments can be a numeric value, a string value, or a whole array.  Every GIANT and DOUBLE variable counts as two arguments, as does the preceding argument.  Arrays and composites count as one argument, regardless of type.

numeric arguments
  a = Func (b, c#+d#, e$$[f,g])

string arguments
  a = Func (b$, c$+d$, e$[f,g])

array arguments
  a = Func (@b[], @c%[], @d#[], @e$[])

argument kind and data-type checking
The kind and data type of each argument must be compatible with the corresponding argument in the function declaration.  The data type of numeric arguments do not have to be identical to the corresponding parameter in the function declaration.  When they differ, the compiler converts the value to the declared type before passing it to the function.  The compiler will not, however, convert string or composite arguments to numeric types or vice versa.  The types of array arguments must be identical, except for arrays given the ANY type in the function declaration.

Functions may not be called within a function argument list.  This prevents argument evaluation order differences from occurring when programs are ported from system to system.

  a = Func1 ( b, Func2() )   ' ERROR : argument attempted to call Func2()
  a = Func1 ( b, &Func2() )  ' OKAY  : no argument attempt to call Func2()