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

Re: [Scheme-reports] 6.1 Exceptions needs examples

Helmut Eller scripsit:

> guard could avoid full continuations in (at least) two ways:
> 1. When no cond-clause matches, guard re-raises the condition in the
>    dynamic context of the guard form.  This is similar to Java's
>    try-catch (+ the implicit re-throw).
> 2. Evaluate the cond-tests in the dynamic environment of the original
>    raise.  The advantage of this strategy is that it preserves the
>    context of the error; which is useful for debugging.  This is similar
>    to Common Lisp's HANDLER-CASE.

#2 is trivially simulated by using `with-exception-handler` and putting
the cond inside the handler.  The point of `guard` is that it packages
up the necessary escape operation.

If I had to choose, I'd prefer #1.  Note that if there is no else clause,
the behavior is effectively #1.  A compiler or smart macro-expander
could notice this and take advantage of it.

A poetical purist named Cowan           [that's me: cowan@x]
Once put the rest of us dowan.          [on xml-dev]
    "Your verse would be sweeter        http://www.ccil.org/~cowan
    If it only had metre
And rhymes that didn't force me to frowan."     [overpacked line!] --Michael Kay

Scheme-reports mailing list