Function definitions

    Function definitions are introduced by the 'define' keyword.
    Other than this, the basic structure of a function is like in C.
    That is, parameters are specified for the function within parenthesis,
    the function body is introduced by a left brace, variables are
    declared for the function, statements implementing the function
    follow, and the function is ended with a right brace.

    There are some subtle differences, however.  The types of parameters
    and variables are not defined at compile time, but instead are typed
    at runtime.  Thus there is no definitions needed to distinguish
    between integers, fractions, complex numbers, matrices, and so on.
    Thus when declaring parameters for a function, only the name of
    the parameter is needed.  Thus there are never any declarations
    between the function parameter list and the body of the function.

    For example, the following function computes a factorial:

	    define factorial(n)
	    {
		    local	ans;

		    ans = 1;
		    while (n > 1)
			    ans *= n--;
		    return ans;
	    }

    If a function is very simple and just returns a value, then the
    function can be defined in shortened manner by using an equals sign
    in place of the left brace.  In this case, the function declaration
    is terminated by a newline character, and its value is the specified
    expression.  Statements such as 'if' are not allowed.  An optional
    semicolon ending the expression is allowed.  As an example, the
    average of two numbers could be defined as:

	    define average(a, b) = (a + b) / 2;

    Functions can be defined which can be very complex.  These can be
    defined on the command line if desired, but editing of partial
    functions is not possible past a single line.  If an error is made
    on a previous line, then the function must be finished (with probable
    errors) and reentered from the beginning.  Thus for complicated
    functions, it is best to use an editor to create the function in a
    file, and then enter the calculator and read in the file containing
    the definition.

    The parameters of a function can be referenced by name, as in
    normal C usage, or by using the 'param' function.  This function
    returns the specified parameter of the function it is in, where
    the parameters are numbered starting from 1.  The total number
    of parameters to the function is returned by using 'param(0)'.
    Using this function allows you to implement varargs-like routines
    which can handle any number of calling parameters.  For example:

	    define sc()
	    {
		    local s, i;

		    s = 0;
		    for (i = 1; i <= param(0); i++)
			    s += param(i)^3;
		    return s;
	    }

    defines a function which returns the sum of the cubes of all it's
    parameters.
