Re: raise-continuable-foreign-error
Marc Nieper-WiÃkirchen 27 Jul 2020 14:12 UTC
Am Mo., 27. Juli 2020 um 16:04 Uhr schrieb John Cowan <xxxxxx@ccil.org>:
> On Mon, Jul 27, 2020 at 8:21 AM Marc Nieper-Wißkirchen <xxxxxx@nieper-wisskirchen.de> wrote:
>
>> raise and raise-continuable are fundamentally different procedures.
>> The former is a continuation procedure that does not return. The
>> latter is an ordinary procedure.
>
> Actually they are both ordinary procedures. Raise can be defined in terms of raise-continuable thus:
By an ordinary procedure, I mean a procedure that (generically)
returns. The raise procedure, however, never returns. It has the
signature of a continuation, which can be viewed as a co-value (as
opposed to values or procedures (which act covariantly on values and
contravariantly on co-values)).
> (define (raise condition)
> (raise-continuable condition)
> (raise (make-something "Attempt to continue from raise")))
This will loop when an exception handler is installed.
> It's true that when the current exception handler was created by guard or the equivalent, that handler is a continuation procedure unless none of the guard-clauses match, in which case it is ordinary.
My analysis has nothing to do with the type of exception handler installed.
Marc