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

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Fri Jul 11 11:16:52 EDT 2008

At Fri, 11 Jul 2008 10:59:40 -0400, Felix Klock's PLT scheme proxy wrote:
> Robby (cc'ing plt-scheme and the rest of the people involved in the  
> discussion)-
> On Jul 11, 2008, at 10:49 AM, Robby Findler wrote:
> > On Fri, Jul 11, 2008 at 9:42 AM, Derick Eddington
> > <derick.eddington at gmail.com> wrote:
> >>>> Would it be possible to have guard just not jump out,
> >>>
> >>> It should jump out for the same reasons as `with-handlers', right?
> >>
> >> What are those reasons?  I've never known.
> >
> > One reason is that loops that involve a with-handlers won't be
> > tail-recursive (unless you jump out yourself in the handler of
> > course).
> >
> > Something like this:
> >
> > (define (keep-trying)
> >  (with-handlers ([whatever? (lambda () ... (keep-trying))])
> >    ...))
> That example seems like it justifies jumping out before the evaluation  
> of the <expression> ... of each <cond clause> of the guard
> But does it justify such jumping before the evaluation of the <test>  
> of each <cond clause> of the guard?
> I would think the <test> expression would be the point of interest  
> when it comes to continuable exceptions...

I wish I could remember more on this one. I think we tried, early on,
evaluating tests in the continuation of the raise, but we abandoned
that possibility. Maybe it was just that we gave up on using the same
mechanism for continuable and non-continuable exceptions, and so it
seemed simpler and more consistent (in the way you suggest) to jump out
for the tests, too. Or maybe there was a more direct reason, but I
don't remember it.


Posted on the users mailing list.