Next: Backquote, Previous: Compiling Macros, Up: Macros
A Lisp macro is a list whose car is macro
. Its cdr should
be a function; expansion of the macro works by applying the function
(with apply
) to the list of unevaluated argument-expressions
from the macro call.
It is possible to use an anonymous Lisp macro just like an anonymous
function, but this is never done, because it does not make sense to pass
an anonymous macro to functionals such as mapcar
. In practice,
all Lisp macros have names, and they are usually defined with the
special form defmacro
.
defmacro
defines the symbol name as a macro that looks like this:(macro lambda argument-list . body-forms)(Note that the cdr of this list is a function—a lambda expression.) This macro object is stored in the function cell of name. The value returned by evaluating the
defmacro
form is name, but usually we ignore this value.The shape and meaning of argument-list is the same as in a function, and the keywords
&rest
and&optional
may be used (see Argument List). Macros may have a documentation string, but anyinteractive
declaration is ignored since macros cannot be called interactively.