summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--eval.c2
2 files changed, 12 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index b52a0678..f92dd991 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/eval.c b/eval.c
index fe6337b6..ed3f70b7 100644
--- a/eval.c
+++ b/eval.c
@@ -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));