guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: "Missing" libraries/concepts found in other languages/ecosystems?


From: Chris Vine
Subject: Re: "Missing" libraries/concepts found in other languages/ecosystems?
Date: Tue, 14 Jul 2020 17:21:48 +0100

On Tue, 14 Jul 2020 12:32:46 +0200
Catonano <catonano@gmail.com> wrote:
> Il giorno dom 12 lug 2020 alle ore 21:33 Chris Vine <vine35792468@gmail.com>
> ha scritto:
> > On Sun, 12 Jul 2020 20:14:23 +0100
> > Chris Vine <vine35792468@gmail.com> wrote:
> > [snip]
> > > Secondly, if the handler returns and #:unwind? is set to #f then
> > > raise-continuable will return with the value returned by the handler.
> > > So this:
> > >
> > >   (with-exception-handler
> > >       (lambda (x) (+ x 3))
> > >     (lambda () (+ (raise-continuable 10) 6)))
> >
> > Ah I see you are using (ice-9 exceptions).  Better be consistent with this:
> >
> >   (with-exception-handler
> >       (lambda (x) (+ x 3))
> >     (lambda () (+ (raise-exception 10 #:continuable? #t) 6))))
> 
> I find this a little bit confusing, admittedly
> 
> so is it
> 
> #:unwind #f
> 
> on with-exception-handler  and
> 
> #:continuable #t
> 
> on raise exception ?

If you want a continuable exception then you don't unwind.  If you
unwind there is no difference between a continuable exception and a
non-continuable one - you have unwound the stack and that's it.

If the exception is non-continuable (as most are), you must either
unwind, or you must in the exception handler re-raise the exception or
invoke your own continuation object.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]