summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-05-13 07:26:40 -0700
committerKaz Kylheku <kaz@kylheku.com>2015-05-13 07:26:40 -0700
commit4108b7cb7a569600c9d17c5116be74e2ecf4b3e1 (patch)
tree2c821a97b6745d997a8fb8c9f5a893a2fef955bd
parentff0f81fcf1062e17a9b9f1967bac85f6dfc16a90 (diff)
downloadtxr-4108b7cb7a569600c9d17c5116be74e2ecf4b3e1.tar.gz
txr-4108b7cb7a569600c9d17c5116be74e2ecf4b3e1.tar.bz2
txr-4108b7cb7a569600c9d17c5116be74e2ecf4b3e1.zip
* place.tl (push): Ensure left-to-right eval order.
-rw-r--r--ChangeLog4
-rw-r--r--place.tl6
2 files changed, 8 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index a3616aae..046187a6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2015-05-13 Kaz Kylheku <kaz@kylheku.com>
+
+ * place.tl (push): Ensure left-to-right eval order.
+
2015-05-12 Kaz Kylheku <kaz@kylheku.com>
* place.tl (rlet): For the sake of sane evaluation order
diff --git a/place.tl b/place.tl
index ffa37a66..f4d48cff 100644
--- a/place.tl
+++ b/place.tl
@@ -202,8 +202,10 @@
(,setter-1 ,tmp))))))
(defmacro push (new-item place :env env)
- (with-update-expander (getter setter) place env
- ^(,setter (cons ,new-item (,getter)))))
+ (with-gensyms (new-sym)
+ ^(let ((,new-sym ,new-item))
+ ,(with-update-expander (getter setter) place env
+ ^(,setter (cons ,new-sym (,getter)))))))
(defmacro pop (place :env env)
(with-gensyms (tmp)