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

Issue: UNWIND-PROTECT-CLEANUP-NON-LOCAL-EXIT (Version 2)



    Date: Monday, 26 October 1987  14:50-EST
    From: Masinter.pa at Xerox.COM
    To:   Ram at C.CS.CMU.EDU
    Re:   Issue: UNWIND-PROTECT-CLEANUP-NON-LOCAL-EXIT (Version 2)

    I've read your message several times; I think what you are saying is
    that you prefer

    RETURN-INNER, RETURN-OUTER, IS-AN-ERROR (not written up), and
    SIGNAL-ERROR.

Actually, I favor IS-AN-ERROR over RETURN-OUTER, since it would allow
me to implement RETURN-INNER.  If I was writing an error system, I
might be more concerned about making this rigorously defined.


    Here is another case to consider:

    (DEFUN UNSTOPPABLE () (UNWIND-PROTECT (LOOP) (UNSTOPPABLE)))

    Doesn't this have the same "unstoppable" property, completely orthogonal
    to this issue? I.e., that it cannot be aborted by an asynchronous
    "interrupt" unless they happen to come in at exactly the right moment?

Yep.  That's real interesting.  I suppose one could argue that it
isn't so important to prevent people from screwing themselves this
way, since real men don't write recursive functions.  I see this as
demonstrating a fundamental property of UNWIND-PROTECT: it allows
transfer of control to be usurped.

  Rob