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

varieties of "NETS" for catching



    Date: 15 May 1980 13:43-EDT
    From: Alan Bawden <ALAN at MIT-MC>
    To: CWH at MIT-MC
From: 	CWH@MIT-MC
Date: Wed, 15 May 80 05:45:26 GMT
Original-Date: 05/15/80 01:45:26 EDT
Subject:
	(*CATCH '(A B C) (COMPUTE)) in MacLisp means to catch throws to any one of
	the tags A, B, C.
    Really?  (Amazing, it really does work that way!)  That is not an
    advertized feature as far as I can tell.  Perhaps someone should
    document it somewhere.
During the late summer of 1978, the NIL/MACLISP/LISPM community seemed to
reach agreement about the names and functionalities of the various catchers.
Although this included  lists of tags, as well as a single atomic tag, as
argument to CATCH and CATCH-BARRIER, it was never fully documented in
maclisp's LISP NEWS.  The general idea was that the name *CATCH was to
be a temporary expedient until we could expunge all usages of the
restrictive old-style CATCH.  Then, we'd re-introduce the name CATCH with
the new winning syntax (as in *CATCH) and advertise its "tag-list"
extension.  This has not yet been done for maclisp.  NIL has all these 
features right now (along with a macro defintion for *CATCH which merely 
turns it into CATCH), and shortly then we'll be able to say that maclisp's 
catchers are a copy of NIL's.
   By the bye, CATCHALL was invented for just the reason which GSB pines
for - to intercept all THROWs and inspect them.  The idea was that if the
"inspection test" fails, the CATCHALL function merely does a THROW (or is
it a "*THROW"?) with the given tag and value, in order to continue the 
throwing.  Admittedly this lets an unseen-throw-tag error occur higher in 
the stack than one would like, but . . .