[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