summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2011-12-03 21:28:47 -0800
committerKaz Kylheku <kaz@kylheku.com>2011-12-03 21:28:47 -0800
commit336071aa972798af0252345d90e0a8d4acdc1e00 (patch)
treecf57a1f13fc6cc263717f9645a1c06d30d1a88a2 /eval.c
parent252111c171f300a7990bdc79f45dbe55aba0f36b (diff)
downloadtxr-336071aa972798af0252345d90e0a8d4acdc1e00.tar.gz
txr-336071aa972798af0252345d90e0a8d4acdc1e00.tar.bz2
txr-336071aa972798af0252345d90e0a8d4acdc1e00.zip
Expose lazy lists in TXR Lisp.
* eval.c (eval_init): New intrinsic functions. * lib.c (rplaca, rplacd, lcons_fun): New functions. (make_lazycons): Renamed to make_lazy_cons, relocated and turned into external function. (lazy_stream_func, lazy_stream_cons): Follow rename of make_lazycons. * lib.h (rplaca, rplacd, make_lazy_cons, lcons_fun): Declared. * txr.1: Stub sections created.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index 3ffcfbaa..c2ae69ce 100644
--- a/eval.c
+++ b/eval.c
@@ -1029,8 +1029,12 @@ void eval_init(void)
sethash(op_table, return_from_s, cptr((mem_t *) op_return_from));
reg_fun(cons_s, func_n2(cons));
+ reg_fun(intern(lit("make-lazy-cons"), user_package), func_n1(make_lazy_cons));
+ reg_fun(intern(lit("lcons-fun"), user_package), func_n1(lcons_fun));
reg_fun(car_s, func_n1(car));
reg_fun(cdr_s, func_n1(car));
+ reg_fun(intern(lit("rplaca"), user_package), func_n2(rplaca));
+ reg_fun(intern(lit("rplacd"), user_package), func_n2(rplacd));
reg_fun(intern(lit("first"), user_package), func_n1(car));
reg_fun(intern(lit("rest"), user_package), func_n1(cdr));
reg_fun(append_s, func_n0v(appendv));