From 4108b7cb7a569600c9d17c5116be74e2ecf4b3e1 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Wed, 13 May 2015 07:26:40 -0700 Subject: * place.tl (push): Ensure left-to-right eval order. --- ChangeLog | 4 ++++ place.tl | 6 ++++-- 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 + + * place.tl (push): Ensure left-to-right eval order. + 2015-05-12 Kaz Kylheku * 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) -- cgit v1.2.3