[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


It seems to me the following is consistent usage close to LISP tradition:

A 'form' is an executable s-expression, i.e. something that might reasonably
be passed to EVAL or pass through the compiler. Forms are atomic or
non-atomic. Non-atomic forms have two parts, the function part (the CAR,
which may be a function or the name of a function or something analagous)
and the argument part (the CDR, which is usually a list of arguments but
may be rather strange in macros and special-forms). Perhaps anything that
can fit in the function part of a form should be called a 'function',
but in CL that term has been restricted to omit macros and special-forms
[sic]. Alternatively it could be called an 'operator'. Thus an operator
would be either a function or a macro-operator or a special-operator
or the names of any of those: I.e. any of #<FUNCTION 2 174625> or
(LAMBDA (X) (PLUS 5 X)) or ADD5 or #<MACRO 126453> or PROG1 or
#<FEXPR 142231> or GO.  (Don't take those code-pointers literally, DWIM.)
So, is it likely we can agree on some consistent usage that distinguishes
a function or operator (or its name) from a form containing it?