tgl@sss.pgh.pa.us (Tom Lane) wrote:
> Does anyone have a problem with this macro syntax? The try/catch
> names are stolen from Java, so I'm figuring they won't terribly
> surprise any modern programmer, but I'm open to different names if
> anyone has a better idea.
Mitch Bradley, once of Sun, once founder of "Bradley ForthWorks," and
creator of the form of Forth used for the OpenBOOT standard, got it
introduced to ANSI Forth. I remember this being a pretty neat
addition to Forth back in the late '80s...
<http://dec.bournemouth.ac.uk/forth/euro/ef98/milendorf98.pdf>
That paper attributes it as having come from Lisp.
Java almost certainly "stole" it from Common Lisp, which took it from
MacLisp (albeit with changes in semantics).
Guy Steele, now a Sun Fellow, documents this in _Common Lisp, The
Language_ (2nd edition), section 7.11.
Python has it; Perl has an add-in; Ruby has it; Scheme has it
(possibly as an SRFI rather than in R?RS); Modula-3 has it (sans the
"catch" keyword), and the canonical reference, there, is by Harbison,
known to work with the very same Steele :-). Haskell hasn't a
"throw," but does have a "catch." OCAML has "raise" and "try," where
"catch" is implicit in the trying. ISO Prolog has catch/3 and
throw/1. Ada has "raise" and exception handlers...
I would therefore think that anything _other_ than this naming
convention would appear remarkable and surprising :-).
--
(reverse (concatenate 'string "gro.mca" "@" "enworbbc"))
http://www3.sympatico.ca/cbbrowne/languages.html
If you're sending someone some Styrofoam, what do you pack it in?