summaryrefslogtreecommitdiffstats
path: root/ChangeLog
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2014-02-23 21:21:17 -0800
committerKaz Kylheku <kaz@kylheku.com>2014-02-23 21:21:17 -0800
commit5cb550642ab86688e903b2221e0ccfa27d87addb (patch)
treea9fbb7efa1aa71be7da4e6212c3069a8025e81cc /ChangeLog
parentaf2e5abd71f5a2d85137cbc524b2b942baf44e82 (diff)
downloadtxr-5cb550642ab86688e903b2221e0ccfa27d87addb.tar.gz
txr-5cb550642ab86688e903b2221e0ccfa27d87addb.tar.bz2
txr-5cb550642ab86688e903b2221e0ccfa27d87addb.zip
* eval.c (env_fbind, env_vbind): Use acons_new_c, and provide
a much more useful return value: the binding cell itself, rather than the symbol. (bind_args): Bugfix: env_vbind was still being called in one case, leading to a neglect to bind a special variable properly. (bindings_helper): Changed interface. Bugfix: in sequential binding, actually bind the successive environments so closures will behave 100% correctly. Returns a list of the actual bindings, in which special variables are not distinguished in any way. (op_let, op_for): Conform to new bindings_helper interface. Use the lexical environment that it returns instead of making a new one. (op_each): Use the environment and list of bindings out of bindings_helper. The bindings are used for stepping the lists, and that includes stepping any special vars. The lexical environment is used for evaluating the body. Thus, we need no special processing for special vars here any more.
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog19
1 files changed, 19 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index f2f39b64..7a517753 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,24 @@
2014-02-23 Kaz Kylheku <kaz@kylheku.com>
+ * eval.c (env_fbind, env_vbind): Use acons_new_c, and provide
+ a much more useful return value: the binding cell itself,
+ rather than the symbol.
+ (bind_args): Bugfix: env_vbind was still being called in one case,
+ leading to a neglect to bind a special variable properly.
+ (bindings_helper): Changed interface. Bugfix: in sequential binding,
+ actually bind the successive environments so closures will behave
+ 100% correctly. Returns a list of the actual bindings, in which
+ special variables are not distinguished in any way.
+ (op_let, op_for): Conform to new bindings_helper interface. Use the
+ lexical environment that it returns instead of making a new one.
+ (op_each): Use the environment and list of bindings out of
+ bindings_helper. The bindings are used for stepping the lists,
+ and that includes stepping any special vars. The lexical environment
+ is used for evaluating the body. Thus, we need no special processing
+ for special vars here any more.
+
+2014-02-23 Kaz Kylheku <kaz@kylheku.com>
+
* eval.c (bindings_helper): This must now bind dynamic values
rather than just assign to them. Got rid of the superfluous variable
saving array. Fixed the problem in recognizing the special_s symbol (it