[Barry knows this, but just for completeness...]
Barry Margolin <barmar@alum.mit.edu> 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:
3.1.2.1.2.2 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
-----
Rob Warnock <rpw3@rpw3.org>
627 26th Avenue <URL:http://rpw3.org/>
San Mateo, CA 94403 (650)572-2607