summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2019-03-11 22:11:29 -0700
committerKaz Kylheku <kaz@kylheku.com>2019-03-11 22:11:29 -0700
commit4098bdfbe0406bfacfc8a1b46bfad38964cfd2df (patch)
tree0e758878ad74a2925125fa48ed59a013203ed7ed /eval.c
parent5e1107b94d8dca026a53cf8d8ab6f53d4a01cdac (diff)
downloadtxr-4098bdfbe0406bfacfc8a1b46bfad38964cfd2df.tar.gz
txr-4098bdfbe0406bfacfc8a1b46bfad38964cfd2df.tar.bz2
txr-4098bdfbe0406bfacfc8a1b46bfad38964cfd2df.zip
New sequence iterator object and functions.
* eval.c (eval_init): Register seq-begin, seq-next and seq-reset. * lib.c (seq_iter_s): New symbol variable. (seq_iter_mark): New static function. (seq_iter_ops): New static structure. (seq_begin, seq_next, seq_reset): New functions. (obj_init): Intern seq-iter symbol, used as class name for iterators. * lib.h (seq_iter_s, seq_begin, seq_next, seq_reset): Declared. * txr.1: Documented.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index a3b593ef..b628257d 100644
--- a/eval.c
+++ b/eval.c
@@ -6858,6 +6858,9 @@ void eval_init(void)
reg_fun(intern(lit("where"), user_package), func_n2(where));
reg_fun(intern(lit("select"), user_package), func_n2(sel));
reg_fun(intern(lit("relate"), user_package), func_n3o(relate, 2));
+ reg_fun(intern(lit("seq-begin"), user_package), func_n1(seq_begin));
+ reg_fun(intern(lit("seq-next"), user_package), func_n2(seq_next));
+ reg_fun(intern(lit("seq-reset"), user_package), func_n2(seq_reset));
reg_fun(intern(lit("rcons"), user_package), func_n2(rcons));
reg_fun(intern(lit("rangep"), user_package), func_n1(rangep));