diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2014-02-23 21:21:17 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2014-02-23 21:21:17 -0800 |
commit | 5cb550642ab86688e903b2221e0ccfa27d87addb (patch) | |
tree | a9fbb7efa1aa71be7da4e6212c3069a8025e81cc /ChangeLog | |
parent | af2e5abd71f5a2d85137cbc524b2b942baf44e82 (diff) | |
download | txr-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-- | ChangeLog | 19 |
1 files changed, 19 insertions, 0 deletions
@@ -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 |