summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2011-12-25 00:42:19 -0800
committerKaz Kylheku <kaz@kylheku.com>2011-12-25 00:42:19 -0800
commit894aec019d3ce82f861a5777236ac079c2f2388d (patch)
treea4e4414899200f6d66e88fa77e1cbffd5ffba804 /eval.c
parent1c8251aae0294881d0dc9fcdffeb2f86040ee24e (diff)
downloadtxr-894aec019d3ce82f861a5777236ac079c2f2388d.tar.gz
txr-894aec019d3ce82f861a5777236ac079c2f2388d.tar.bz2
txr-894aec019d3ce82f861a5777236ac079c2f2388d.zip
* eval.c (eval_init): New function interned.
* lib.c:x (lazy_flatten_scan, lazy_flatten_func): New static functions. (lazy_flatten): New function. * lib.h (lazy_flatten): Declared. * match.c (v_next): Use lazy_flatten instead of flatten for processing a :list source. This means that @(next :list ...) can be used to process infinite lazy lists. * txr.1: Documented lazy-flatten.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index 1a77deb1..f3025be0 100644
--- a/eval.c
+++ b/eval.c
@@ -1248,6 +1248,7 @@ void eval_init(void)
reg_fun(intern(lit("reverse"), user_package), func_n1(reverse));
reg_fun(intern(lit("ldiff"), user_package), func_n2(ldiff));
reg_fun(intern(lit("flatten"), user_package), func_n1(flatten));
+ reg_fun(intern(lit("lazy-flatten"), user_package), func_n1(lazy_flatten));
reg_fun(intern(lit("memq"), user_package), func_n2(memq));
reg_fun(intern(lit("memqual"), user_package), func_n2(memqual));
reg_fun(intern(lit("tree-find"), user_package), func_n3(tree_find));