aboutsummaryrefslogtreecommitdiff
path: root/src/primitives.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/primitives.c')
-rw-r--r--src/primitives.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/primitives.c b/src/primitives.c
index 5f70f09..8e56bf9 100644
--- a/src/primitives.c
+++ b/src/primitives.c
@@ -198,6 +198,11 @@ SExpRef primitive_let(Interp *interp, SExpRef args, bool istail) {
}
body = CDR(args);
+ if (istail) {
+ SExpRef closure = new_lambda(interp, NIL, body, env);
+ ret = new_tailcall(interp, closure, NIL);
+ goto end;
+ }
iter = body;
while (!NILP(iter)) {
exp = CAR(iter);