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

Re: Compiling CASE



"Consider the case (n.p.i.) where the user provides an alternate macro
definition for
his/her own use (possibly because he/she doesn't remember that there
already is a CASE macro). ... This could affect a whole class of
"non-special-forms", i.e. things
like AND, OR, COND, PROG, ...."

"The compiler can have special knowledge of particular macros, as long
as
it ignores this special knowledge if the user redefines the macros."


It is an error to redefine *any* of the built-in symbols of Common Lisp,
whether they are macros, special forms, or functions. 

Compilers can therefore assume anything they want about any of the
built-in symbols of Common Lisp, whether they are functions, macros, or
special forms, since their definition cannot legally be changed.

One might expect a good Common Lisp compiler to produce the same code
whether one used one of the built in macros or its macro expansion.
This is generally possible, although there are some cases where it is
difficult. Certainly the resulting code must be behaviorally equivalent.