From nc524000 Fri Dec 27 15:10:35 1985
Received: by ndsuvax.UUCP (4.12/4.7)
	id AA19586; Fri, 27 Dec 85 15:10:24 cst
Date: Fri, 27 Dec 85 15:10:24 cst
From: nc524000 (Nc524000)
Message-Id: <8512272110.AA19586@ndsuvax.UUCP>
To: ncjuell
Status: R

Many of you were interested in what 'fexpr' routines are.
The normal routines you have worked with are considered to
be of type 'expr'.  The expr type routines eval their arguments
and must have an exact match in the number of parameters in the
function invocation and function definition.  

The fexpr type routines automatically quote their arguments.  The
routine definition is to have only one paramater.  The invocation
can have any number of paramaters (zero or more).  It probably
simplest to show what the two do, so:

(defun a (arg) arg)
(defun b (arg) arg)
(a 1 2 3 4 5)               ==>     (1 2 3 4 5)*
(b 1 2 3 4 5)               ==>     error - wrong number of arguments
(a x y z)                   ==>     (x y z)
(a x)                       ==>     (x)
(b x)                       ==>     error - x does not have a value

The use of fexpr type of code has somewhat been replaced by the
use of macros.  I think that the book does talk about macros.


