diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2015-05-13 07:26:40 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2015-05-13 07:26:40 -0700 |
commit | 4108b7cb7a569600c9d17c5116be74e2ecf4b3e1 (patch) | |
tree | 2c821a97b6745d997a8fb8c9f5a893a2fef955bd | |
parent | ff0f81fcf1062e17a9b9f1967bac85f6dfc16a90 (diff) | |
download | txr-4108b7cb7a569600c9d17c5116be74e2ecf4b3e1.tar.gz txr-4108b7cb7a569600c9d17c5116be74e2ecf4b3e1.tar.bz2 txr-4108b7cb7a569600c9d17c5116be74e2ecf4b3e1.zip |
* place.tl (push): Ensure left-to-right eval order.
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | place.tl | 6 |
2 files changed, 8 insertions, 2 deletions
@@ -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 @@ -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) |