[racket] raise vs abort

From: Robby Findler (robby at eecs.northwestern.edu)
Date: Thu Jan 6 12:23:09 EST 2011

I think one reason is historical, but I don't know if it is the only
one. Probably it would take some work to figure it out.

Robby

On Thu, Jan 6, 2011 at 11:14 AM, Keiko Nakata
<keiko at kurims.kyoto-u.ac.jp> wrote:
> So, I fall back into the same question of why 'raise' has to be a primitive,
> given
>
>> >> It can be implemented in terms of continuation marks (if you know the
>> >> key for exception handlers).
>
> But,
>
> On Thu, Jan 6, 2011 at 3:29 PM, Robby Findler <robby at eecs.northwestern.edu> wrote:
>> Probably you can get very close if not exactly there if you implement
>> call-with-exception-handler at the same time.
>
> This may suggest there is a historical reason.
>
>> No, that's not what I mean. `raise' can be instructed not to install
>> the barrier (via its optional second argument),
>
> I remembered this only now.
>
>> `raise' just calls the installed exception handlers in turn, until one
>> does not return. It does not unwind the stack as `abort' does. It's
>> something like the following (very lightly tested) code.
>
> Yes. I think I've understood this part.
>
> Thanks,
> Keiko
> _________________________________________________
>  For list-related administrative tasks:
>  http://lists.racket-lang.org/listinfo/users
>


Posted on the users mailing list.