[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
varieties of "NETS" for catching
- To: CWH at MIT-MC, GSB at MIT-MC
- Subject: varieties of "NETS" for catching
- From: JONL at MIT-MC (Jon L White)
- Date: Sat ,17 May 80 13:29:00 EDT
CC: NIL at MIT-MC, (BUG LISP) at MIT-MC, (BUG LISPM) at MIT-MC
Date: 15 May 1980 13:43-EDT
From: Alan Bawden <ALAN at MIT-MC>
To: CWH at MIT-MC
CWH@MIT-MC 05/15/80 01:45:26
(*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 . . .