I'm developing a Dylan-related dialect of Lisp [1], and have a
question about experience with the "condition firewall" aspect of
condition handling [2], and especially the absence of such a firewall
in Dylan.
In Lisp (CL and ISLISP), when a handler is called, the handlers that
are in force are those handlers that were in force back when the
handler was established, not the current handlers. So, while the call
stack is (of course) not unwound, the handler stack *is* unwound
before a handler is called. This is called the "condition firewall".
In Dylan on the other hand, when a handler is called, the handlers
that are in force are simply the current handlers, including the
called handler. The handler stack is not unwound, just like the call
stack.
This means that in Dylan, a handler function may have to handle
conditions that happen in its own body. A comp.lang.lisp message [3]
by Kent Pitman gives an example (at the very end) where this may lead
to infinite recursion.
My question: in your experience, is the absence of a condition
firewall in Dylan an issue in practice?
Thanks in advance,
Manuel Simoni
[1] http://axisofeval.blogspot.com/2011/04/edgelisp-progress.html
[2] http://www.nhplace.com/kent/Papers/Condition-Handling-2001.html
[3] http://groups.google.com/group/comp.lang.lisp/msg/3e038fdd4e48dc28
(Message-ID: <sfw3czg...@shell01.TheWorld.com>)