Subject: Re: Special forms vs. Macros
From: (Rob Warnock)
Date: Sun, 09 Jan 2005 04:14:38 -0600
Newsgroups: comp.lang.lisp
Message-ID: <>
[Barry knows this, but just for completeness...]

Barry Margolin  <> wrote:
| The list of special forms in the language spec is the result of 
| experienced language designers and implementors, who know which 
| operators typically need to be recognized as primitives by the 
| implementation.  The spec also says that an implementation is
| allowed to implement any special operator as a macro.

And vice-versa [2nd sentence below], with one additional proviso: Macro Forms
    An implementation is free to implement a Common Lisp special
    operator as a macro. An implementation is free to implement
    any macro operator as a special operator, but only if an
    equivalent definition of the macro is also provided.

Presumably this is so that user-written code-walkers that don't
know that some macro is really a special operator in a particular
implementation can still call MACROEXPAND and do (almost) the
right thing.


Rob Warnock			<>
627 26th Avenue			<URL:>
San Mateo, CA 94403		(650)572-2607