summaryrefslogtreecommitdiffstats
path: root/lib.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2012-01-10 22:51:14 -0800
committerKaz Kylheku <kaz@kylheku.com>2012-01-10 22:51:14 -0800
commit09c6384d6bb4e3c44bf64299657f492ad4bf756a (patch)
tree46804fac62e964547b877d51f4ad6df2d3217e6e /lib.h
parent9fa74517eb0b8252e88f4c636e6e93bca0c9f0be (diff)
downloadtxr-09c6384d6bb4e3c44bf64299657f492ad4bf756a.tar.gz
txr-09c6384d6bb4e3c44bf64299657f492ad4bf756a.tar.bz2
txr-09c6384d6bb4e3c44bf64299657f492ad4bf756a.zip
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.
Diffstat (limited to 'lib.h')
-rw-r--r--lib.h4
1 files changed, 3 insertions, 1 deletions
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);