summaryrefslogtreecommitdiffstats
path: root/share/txr/stdlib/param.tl
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2019-03-06 21:30:00 -0800
committerKaz Kylheku <kaz@kylheku.com>2019-03-06 21:30:00 -0800
commit4687dad975105144fd04827ca525a6272102b9d0 (patch)
tree262ac1311360d66b2a314da7b3b77ec1545f6e5e /share/txr/stdlib/param.tl
parent9997fdaffbd9b5061fb7292c8720bce89e64072f (diff)
downloadtxr-4687dad975105144fd04827ca525a6272102b9d0.tar.gz
txr-4687dad975105144fd04827ca525a6272102b9d0.tar.bz2
txr-4687dad975105144fd04827ca525a6272102b9d0.zip
New macro: defset.
* lisplib.c (defset_instantiate, defset_set_entries): New static functions. (lisplib_init): Register auto-load of defset.tl, keyed on defset symbol. * share/txr/stdlib/defset.tl: New file. * share/txr/stdlib/paramt.tl (param-parser-base opt-syms): New method. * txr.1: Documented.
Diffstat (limited to 'share/txr/stdlib/param.tl')
-rw-r--r--share/txr/stdlib/param.tl10
1 files changed, 8 insertions, 2 deletions
diff --git a/share/txr/stdlib/param.tl b/share/txr/stdlib/param.tl
index 2128a9d4..2fbf79be 100644
--- a/share/txr/stdlib/param.tl
+++ b/share/txr/stdlib/param.tl
@@ -54,11 +54,17 @@
me.key key
me.nreq (len rp)
me.nopt (len opt)
- me.nfix (+ me.nreq me.nopt))))))
+ me.nfix (+ me.nreq me.nopt)))))
+
+ (:method opt-syms (me)
+ (build
+ (each ((o me.opt))
+ (caseql (len o)
+ ((1 2) (add (car o)))
+ (3 (add (car o) (caddr o))))))))
(defstruct (fun-param-parser syntax form) param-parser-base
(mac-param-p nil))
(defstruct (mac-param-parser syntax form) param-parser-base
(mac-param-p t)))
-