Bruno Haible writes:
>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 =
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)