diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2015-05-12 07:44:58 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2015-05-12 07:44:58 -0700 |
commit | ff0f81fcf1062e17a9b9f1967bac85f6dfc16a90 (patch) | |
tree | 652e2b24c9212533a877eafba1913caabc1ed942 | |
parent | c9ad2400fa6e484951a1caedacfcae1175506a40 (diff) | |
download | txr-ff0f81fcf1062e17a9b9f1967bac85f6dfc16a90.tar.gz txr-ff0f81fcf1062e17a9b9f1967bac85f6dfc16a90.tar.bz2 txr-ff0f81fcf1062e17a9b9f1967bac85f6dfc16a90.zip |
* place.tl (rlet): For the sake of sane evaluation order
in the face of unknown side effects, do not thread symbolic references;
only propagate constants.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | place.tl | 4 |
2 files changed, 8 insertions, 2 deletions
@@ -1,5 +1,11 @@ 2015-05-12 Kaz Kylheku <kaz@kylheku.com> + * place.tl (rlet): For the sake of sane evaluation order + in the face of unknown side effects, do not thread symbolic references; + only propagate constants. + +2015-05-12 Kaz Kylheku <kaz@kylheku.com> + * eval.c (env_vb_to_fb): Allow null env argument. This case occurs when (flet () ...) is expanded. @@ -96,8 +96,8 @@ (defmacro rlet (bindings :env e . body) (let ((exp-bindings (mapcar (aret ^(,@1 ,(macroexpand @2 e))) bindings))) - (let ((renames [keep-if [orf symbolp constantp] exp-bindings second]) - (regular [remove-if [orf symbolp constantp] exp-bindings second])) + (let ((renames [keep-if constantp exp-bindings second]) + (regular [remove-if constantp exp-bindings second])) (cond ((and renames regular) ^(symacrolet ,renames (let ,regular ,*body))) |