summaryrefslogtreecommitdiff
path: root/lisp.c
diff options
context:
space:
mode:
Diffstat (limited to 'lisp.c')
-rw-r--r--lisp.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/lisp.c b/lisp.c
index be71a30..dca63ad 100644
--- a/lisp.c
+++ b/lisp.c
@@ -208,6 +208,8 @@ value *eval(env *e, value *v) {
}
if (v->type == VT_PAIR) {
+ //printf("pair found: ");
+ //println_value(v);
return eval_pair(e, v);
}
@@ -283,8 +285,9 @@ value *eval_pair(env *e, value *v) {
}
return apply(head_eval, reverse(args_eval));
}
-
- return v;
+
+ // else evaluate the list recursively
+ return cons(eval(e, car(v)), eval(e, cdr(v)));
}
value *apply(value *lval, value *args) {