[iterate-devel] AW: handler-bind macroexpansion and special operators (fwd)
Hoehle, Joerg-Cyril
Joerg-Cyril.Hoehle at t-systems.com
Fri Jan 14 13:52:04 UTC 2005
Bruno Haible writes:
>... SYS::%HANDLER-BIND,
>and at this point the code walker would barf as well.
Not necessarily. You don't know what the code-walker wants to do (perhaps count function calls, or cross-ref). The code-walker may decide to leave unknown specials alone (most reasonable).
However, with the current behaviour, it does not barf on %handler-bind, it barfs on ((error ...) ...) inside it, which is not a correct form, and has no possibility to know where that illegal form comes from.
If we had (special-operator-p sys::%handler-bind) -> true in CLISP, then any code-walker would know that it can't continue, which is better than to assume sys::%handler-bind to be a function call when it's clearly not.
That's independent on the need to have to add #+clisp(case-of handler-bind) to individual code-walkers, e.g. Iterate.
BTW, I also started a thread in cll on this special operator issue
Subject: what are allowed special forms? (CLHS clarification)
Regards,
Jörg.
More information about the iterate-devel
mailing list