From e3b8eded6cf924e2f1e532f0db1aef899b451ccf Mon Sep 17 00:00:00 2001 From: Felix Perktold Date: Wed, 21 Jan 2026 19:48:47 +0100 Subject: fix integers-from style infinite lists --- modules/std_lib.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'modules') diff --git a/modules/std_lib.c b/modules/std_lib.c index a38c5ff..858d34c 100644 --- a/modules/std_lib.c +++ b/modules/std_lib.c @@ -5,15 +5,23 @@ value *procedure_cons(env *e, value *args) { value *v = eval(e, car(args)); - return cons(v, eval(e, car(cdr(args)))); + return cons(v, make_thunk(e, car(cdr(args)))); } value *procedure_car(env *e, value *args) { - return car(eval(e, car(args))); + value *v = eval(e, car(args)); + while (v->type == VT_THUNK) { + v = force_thunk(v); + } + return car(v); } value *procedure_cdr(env *e, value *args) { - return cdr(eval(e, car(args))); + value *v = eval(e, car(args)); + while (v->type == VT_THUNK) { + v = force_thunk(v); + } + return cdr(v); } value *procedure_reverse(env *e, value *args) { -- cgit v1.2.3