[racket] raise vs abort

From: Casey Klein (clklein at eecs.northwestern.edu)
Date: Thu Jan 6 08:20:29 EST 2011

On Thu, Jan 6, 2011 at 7:18 AM, Keiko Nakata <keiko at kurims.kyoto-u.ac.jp> wrote:
>> I'm not completely clear, but I think the only point is that 'raise'
>> does not, in general, actually abort. It calls a handler that makes
>> the decision to abort or not. When aborting actually happens, however,
>> abort is what does the aborting.
> Hmm. If I understand, you are saying that 'raise' is a function
> call with dynamic binding for the function. I have been also thinking
> a way to rationalize Racket's behavior of control operators
> capturing and installing exception handlers; your view might be consistent
> with this behavior too. I have to think about it more.
> Still I am not certain that this behavior of 'raise' cannot be implemented
> by other (delimited) control operators. And, probably I do not still
> understand why 'raise' has to be a primitive.

It can be implemented in terms of continuation marks (if you know the
key for exception handlers).

> At least, I'm not fully clear about it.
> (For the moment I ignore the barrier, as it looks more like a contract
> which guarantees some consistency.)
> I hope my email makes sense...
> Keiko

Posted on the users mailing list.