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

KMP's proposal

Now, in response to Mary Fontana's comments:

    1. I think condition handlers should be searched from the inside out...

I doubt that anyone would disagree about searching condition-binds in
inside-out order.  What may be controversial is letting a more general
handler established in an inner condition-bind override a more specific
handler established farther out.  I think it should work this way, as I
said in my earlier note, but I'm not sure what the Lisp Machine does or
what KMP was proposing.

    Kent talked about default handlers in his memo, "Exceptional
    Situations in Lisp".  Whether or not the order should be reversed for
    default handlers is unclear to me.

I think if we get into the issue of "default handlers" and their proper
hierarchical behavior, all is lost.  I would suggest that we just try to
agree on something like what KMP proposed, and not try to standardize
what happens if you escape from the known universe.

    2. I think we need restart handlers to set up proceed options which do
    a non-local transfer of control.  On a lisp machine, when the debugger
    prints the proceed options for an error, it includes the restart
    proceed options (one of which is usally assigned to ABORT).  Any
    condition handler or debugger could suggest to proceed by restarting
    at a certain point in the program.  We need a CONDITION-RESTART
    special form.

Is a special piece of machinery really needed for this?  Couldn't this
be handled easily by Condition-case, with one or more of the clauses
being a throw to some appropriate outer catch?  Or am I missing something?

    3. Class hierarchy of conditions as well as proceed options should be
    available.  This was discussed in Kent's memo on exception handling.

Can you supply an example where this is needed?  The simpler we keep
this, the easier it is going to be to come up with something usable.

    4. The common lisp functions ERROR and CERROR should include a
    signal-name (condition-type) argument.

I agree.  It's not obvious to me where such an argument can be inserted
in a compatible way, however.

    5. I recommend including the lisp machine's CONDITION-CASE,
    CONDITION-CALL, CATCH-ERROR and IGNORE-ERRORS.  All of these could be
    implemented with CONDITION-BIND.

I'm not sure everyone on the list has access to the Lisp Machine
documentation.  Could you spell out in more detail what you are
proposing here?

-- Scott