diff options
-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) |