[iterate-devel] Re: handler-bind macroexpansion and special operators (fwd)

Bruno Haible bruno at clisp.org
Fri Jan 14 13:05:09 UTC 2005


Joerg-Cyril Hoehle wrote:
> Every program or library which does code-walking and comes across
> IGNORE-ERRORS or HANDLER-BIND in CLISP will barf on this.

Yes. Like HANDLER-BIND, like COMPILER-LET, is a primitive that cannot be
emulated using macroexpansions in clisp.

> Having a useful response from SPECIAL-OPERATOR-P would at least help these
> to correctly recognize the situation at hand.

I don't agree. The purpose of the statement in CLHS 3.1.2.1.2.2

  "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."

is obviously that code walkers will use the macro definition and not
have special code for HANDLER-BIND. But this macro definition cannot
do anything else than expand into something containing SYS::%HANDLER-BIND,
and at this point the code walker would barf as well.

So the code walkers need a bit of #+clisp code for either HANDLER-BIND
or SYS::%HANDLER-BIND. The former is better, since HANDLER-BIND is a
documented symbol whose meaning won't change.

Bruno




More information about the iterate-devel mailing list