diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2017-01-25 10:29:27 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2017-01-25 10:29:27 -0800 |
commit | 41ea4bd2c8791696525aadb0a457ba36fa1d204e (patch) | |
tree | 8d006ed8212c8911d5542cb75808a5c5e26dafd3 /txr.1 | |
parent | 12454b0e43160c851e20614ce888d33c2f8d9b16 (diff) | |
download | txr-41ea4bd2c8791696525aadb0a457ba36fa1d204e.tar.gz txr-41ea4bd2c8791696525aadb0a457ba36fa1d204e.tar.bz2 txr-41ea4bd2c8791696525aadb0a457ba36fa1d204e.zip |
New catch*, giving access to exception symbol.
* eval.c (op_catch): The sys:catch operator now passes the
exception symbol as the first argument of each clause.
This means the catch macro must be adjusted.
* share/txr/stdlib/except.tl (catch): Macro now inserts
a gensym dummy first argument into each clause to take the
symbol passed by the sys:catch operator.
(catch*): New macro, which is identical to the previous
catch macro, and thus exposes the symbol passed as the
first argument.
* txr.1: Documented catch*.
* tests/012/struct.tl: Some gensym numbers need adjusting
in one test case.
Diffstat (limited to 'txr.1')
-rw-r--r-- | txr.1 | 16 |
1 files changed, 15 insertions, 1 deletions
@@ -33055,10 +33055,12 @@ using the .code format string and additional arguments. -.coNP Macro @ catch +.coNP Macros @ catch and @ catch* .synb .mets (catch < try-expression .mets \ \ >> {( symbol <> ( arg *) << body-form *)}*) +.mets (catch* < try-expression +.mets \ \ >> {( symbol >> ( type-arg << arg *) << body-form *)}*) .syne .desc The @@ -33113,6 +33115,18 @@ If there is only one element, takes on the value .codn nil . +The +.code catch* +macro is a variant of +.code catch +with the following difference: when +.code catch* +invokes a clause, it passes the exception symbol as the leftmost argument +.metn type-arg . +Then the exception arguments follow. In contrast, +only the exception arguments are passed to the clauses of +.codn catch . + Also see: the .code unwind-protect operator, and the functions |