From 2d2cfdc16d4d96fa685853d96b8b7f86ec7dd27d Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Sat, 31 Aug 2019 22:33:29 -0700 Subject: interpreter: trivial let goes through let* case. * eval.c (bindings_helper): If there are no bindings or just one binding, then go through the sequential case. Thus trivial let is treated like let*. This avoids the continuation-related overheads incurred in the parallel case. --- eval.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index ad8ed0c9..ef57289f 100644 --- a/eval.c +++ b/eval.c @@ -1656,7 +1656,7 @@ static val bindings_helper(val vars, val env, val sequential, val iter, var; list_collect_decl (new_bindings, ptail); - if (sequential) { + if (sequential || vars == nil || cdr(vars) == nil) { for (iter = vars; iter; iter = cdr(iter)) { val item = car(iter); val value = nil; -- cgit v1.2.3