[plt-scheme] R6RS exception handling and dynamic extent [was: SXML for R6RS]

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Thu Jul 10 11:28:05 EDT 2008

At Thu, 10 Jul 2008 10:11:41 -0500, "Robby Findler" wrote:
> On Thu, Jul 10, 2008 at 10:08 AM, Matthew Flatt <mflatt at cs.utah.edu> wrote:
> > At Thu, 10 Jul 2008 10:00:42 -0500, "Robby Findler" wrote:
> >> I think I'm missing some earlier important part of this conversation
> >> and I wonder if it could be said again for others who might be like
> >> me?
> >>
> >> Why is guard causing problems (when combined with continuable
> >> exceptions, etc)?
> >
> > Both `guard' and `with-handlers' jump out to the dynamic extent of the
> > `guard' or `with-handlers' form to check whether they want to handle a
> > given exception. At that point, if the right way to handle the
> > exception was to continue without jumps, then it's too late.
> >
> > As specified by R6RS, `guard' will at least jump back in to try further
> > handlers --- but that facet of `guard' isn't in our implementation.
> Oh, right, I see.
> Would it be possible to have guard just not jump out, 

It should jump out for the same reasons as `with-handlers', right?

> and for
> with-handlers to either signal an error or not handle continuable
> exceptions or something like that?

Yes, if you do that for `guard', too, then it avoids the problem.
That's essentially un-merging the mechanisms for continuable and
non-continuable exceptions (or at least un-merging them enough).


Posted on the users mailing list.