- Hoehle, Joerg-Cyril Wbret-Plevy.Ubruyr@g-flfgrzf.pbz [2005-01-13 15:06:43 +0100]:
I believe the cause of the bug is that CLISP fails here to respect the obligation AFAIK (where was that in CLHS?) to have all its macros expand into either functions, macros or special forms -- so that code walkers work in CL.
However, sys::%handler-bind looks like it must be handled as a special form (or macro) from the expansion example appended below, yet it's not declared as such. [28]> (special-operator-p 'sys::%handler-bind) NIL
SYS::%HANDLER-BIND cannot be evaluated, only compiled, so, indeed, it is a special operator. marking it as such will not buy much for ITERATE. The only place where it occurs is HANDLER-BIND which is a standard macro though, so I suggest that ITERATE handles HANDLER-BIND specially, not via MACROEXPAND.