diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2012-01-10 22:51:14 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2012-01-10 22:51:14 -0800 |
commit | 09c6384d6bb4e3c44bf64299657f492ad4bf756a (patch) | |
tree | 46804fac62e964547b877d51f4ad6df2d3217e6e /lib.h | |
parent | 9fa74517eb0b8252e88f4c636e6e93bca0c9f0be (diff) | |
download | txr-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.h | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -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); |