From 09c6384d6bb4e3c44bf64299657f492ad4bf756a Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Tue, 10 Jan 2012 22:51:14 -0800 Subject: Spat of new features having to do with lazy processing. * eval.c (prog1_s, gen_s, generate_s, delay_s, promise_s): New symbol variables. (eval_prog1, op_prog1, expand_gen, expand_delay): New static functions. (expand): Handle gen and delay. (lazy_mapcar_func, lazy_mapcar, lazy_mapcarv_func, lazy_mapcarv, lazy_mappendv): New static functions. (rangev_func, rangev, generate_func, generate, repeat_infinite_func, repeat_times_func, repeatv, force): New static functions. (eval_init): New operators and functions interned. lazy-flatten renamed to flatten*. * lib.c (null_f): New global variable. (ltail, lazy_appendv): New functions. (lazy_appendv_func): New static function. (obj_init): null_f protected and initialized. * lib.h (null_f, ltail, lazy_appendv): Declared. * txr.1: Documented. * txr.vim: Updated. --- lib.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'lib.h') diff --git a/lib.h b/lib.h index 4c8d6e69..3d55a914 100644 --- a/lib.h +++ b/lib.h @@ -296,7 +296,7 @@ extern val nothrow_k, args_k; extern val null_string; extern val null_list; /* (nil) */ -extern val identity_f, equal_f, eql_f, eq_f, car_f, cdr_f; +extern val identity_f, equal_f, eql_f, eq_f, car_f, cdr_f, null_f; extern val gensym_counter; @@ -325,6 +325,7 @@ val fourth(val cons); val fifth(val cons); val sixth(val cons); val *tail(val cons); +val *ltail(val *cons); val pop(val *plist); val push(val v, val *plist); val copy_list(val list); @@ -333,6 +334,7 @@ val reverse(val in); val append2(val list1, val list2); val nappend2(val list1, val list2); val appendv(val lists); +val lazy_appendv(val lists); val ldiff(val list1, val list2); val flatten(val list); val lazy_flatten(val list); -- cgit v1.2.3