summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2016-09-14 06:48:35 -0700
committerKaz Kylheku <kaz@kylheku.com>2016-09-14 06:48:35 -0700
commit61617da8db174532055801a7ccdc244b8fb80f2e (patch)
treed2c861b1ce6f5dc35f241451a89068f4fc6cc34d /share
parent936463735640b904a97bad5588a12f9d70e88075 (diff)
downloadtxr-61617da8db174532055801a7ccdc244b8fb80f2e.tar.gz
txr-61617da8db174532055801a7ccdc244b8fb80f2e.tar.bz2
txr-61617da8db174532055801a7ccdc244b8fb80f2e.zip
New place-mutating macro: upd.
* lisplib.c (place_set_entries): Add upd to the auto-load list for place.tl. * share/txr/stdlib/place.tl (upd): New macro. * txr.1: Documented.
Diffstat (limited to 'share')
-rw-r--r--share/txr/stdlib/place.tl5
1 files changed, 5 insertions, 0 deletions
diff --git a/share/txr/stdlib/place.tl b/share/txr/stdlib/place.tl
index d580d91a..61654509 100644
--- a/share/txr/stdlib/place.tl
+++ b/share/txr/stdlib/place.tl
@@ -371,6 +371,11 @@
places))
,orig)))
+(defmacro upd (place . opip-args)
+ (with-gensyms (pl)
+ ^(placelet ((,pl ,place))
+ (set ,pl (call (opip ,*opip-args) ,pl)))))
+
(defmacro defplace (place-destructuring-args body-sym
(getter-sym setter-sym update-body) :
((ssetter-sym clobber-body))