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.
