diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | eval.c | 6 |
2 files changed, 11 insertions, 0 deletions
@@ -1,5 +1,10 @@ 2011-11-29 Kaz Kylheku <kaz@kylheku.com> + * eval.c (expand_vars): Bugfix: was not handling vars + of the form var, only (var initform). + +2011-11-29 Kaz Kylheku <kaz@kylheku.com> + Support assignment to (car ...) and (cdr ...). * eval.c (car_s, cdr_s): New symbol variables. @@ -693,6 +693,12 @@ static val expand_vars(val vars) { if (atom(vars)) { return vars; + } else if (symbolp(car(vars))) { + val rest_vars = rest(vars); + val rest_vars_ex = expand_vars(rest_vars); + if (rest_vars == rest_vars_ex) + return vars; + return cons(car(vars), rest_vars_ex); } else { cons_bind (var, init, car(vars)); val rest_vars = rest(vars); |