summaryrefslogtreecommitdiffstats
path: root/place.tl
diff options
context:
space:
mode:
Diffstat (limited to 'place.tl')
-rw-r--r--place.tl10
1 files changed, 9 insertions, 1 deletions
diff --git a/place.tl b/place.tl
index f4d48cff..d421d4fa 100644
--- a/place.tl
+++ b/place.tl
@@ -475,4 +475,12 @@
(each ((table (list *place-update-expander*
*place-clobber-expander*
*place-delete-expander*)))
- (set [table to] [table from])))))
+ (set [table to] [table from]))))
+
+ (defmacro define-modify-macro (name lambda-list function)
+ (let ((cleaned-lambda-list (mapcar [iffi consp car]
+ (remql : lambda-list))))
+ (with-gensyms (place-sym args-sym)
+ ^(defmacro ,name (:env env ,place-sym ,*lambda-list)
+ (with-update-expander (getter setter) ,place-sym env
+ ^(,setter (,',function (,getter) ,,*cleaned-lambda-list))))))))