diff options
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | eval.c | 2 |
2 files changed, 12 insertions, 1 deletions
@@ -1,5 +1,16 @@ 2014-06-19 Kaz Kylheku <kaz@kylheku.com> + Bugfix: dwim operator contradicts the documentation + and intended design. + + * eval.c (do_eval): When calling do_eval_args to evaluate + the arguments of a compound form that is a function call, + do not pass down the lookup function, but substitute &lookup_var. + Passing down the lookup function means tha all evaluation + enclosed in (dwim ...) or [...] follows the Lisp-1 style. + +2014-06-19 Kaz Kylheku <kaz@kylheku.com> + * eval.c (me_ap): New static function. (eval_init): Use new list_f instead of func_n0v(identity). Register multi as intrinsic. Register me_ap as ap macro. @@ -910,7 +910,7 @@ static val do_eval(val form, val env, val ctx_form, eval_error(form, lit("no such function or operator: ~s"), oper, nao); abort(); } else { - val args = do_eval_args(rest(form), env, form, lookup); + val args = do_eval_args(rest(form), env, form, &lookup_var); debug_frame(oper, args, nil, env, nil, nil, nil); last_form_evaled = form; debug_return (apply(cdr(fbinding), args, form)); |