summaryrefslogtreecommitdiffstats
path: root/txr.1
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2017-01-25 10:29:27 -0800
committerKaz Kylheku <kaz@kylheku.com>2017-01-25 10:29:27 -0800
commit41ea4bd2c8791696525aadb0a457ba36fa1d204e (patch)
tree8d006ed8212c8911d5542cb75808a5c5e26dafd3 /txr.1
parent12454b0e43160c851e20614ce888d33c2f8d9b16 (diff)
downloadtxr-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.116
1 files changed, 15 insertions, 1 deletions
diff --git a/txr.1 b/txr.1
index c0ce427b..4abfebb1 100644
--- a/txr.1
+++ b/txr.1
@@ -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