[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Issue: UNWIND-PROTECT-CLEANUP-NON-LOCAL-EXIT (Version 2)
- To: Masinter.pa@XEROX.COM
- Subject: Issue: UNWIND-PROTECT-CLEANUP-NON-LOCAL-EXIT (Version 2)
- From: Ram@C.CS.CMU.EDU
- Date: Mon, 26 Oct 1987 19:16 EST
- Cc: cl-cleanup@SAIL.STANFORD.EDU
- In-reply-to: Msg of 26 Oct 1987 14:50-EST from Masinter.pa at Xerox.COM
- Sender: RAM@λλ
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