Copyright (C) 2000-2012 |
GNU Info (elisp)Defining MacrosDefining 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'. - Special Form: defmacro name argument-list body-forms... `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 (Note: Argument List). Macros may have a documentation string, but any `interactive' declaration is ignored since macros cannot be called interactively. automatically generated by info2www version 1.2.2.9 |