summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2013-06-11 16:12:49 -0700
committerKaz Kylheku <kaz@kylheku.com>2013-06-11 16:12:49 -0700
commita6b0130ceaeadce6845d698fb68712dc2786e918 (patch)
treedc7bf64d77c90a277ed9d322ae66f4b70cfb73c0 /eval.c
parent573ac250cbf85b32f50545269c994292440d0b5d (diff)
downloadtxr-a6b0130ceaeadce6845d698fb68712dc2786e918.tar.gz
txr-a6b0130ceaeadce6845d698fb68712dc2786e918.tar.bz2
txr-a6b0130ceaeadce6845d698fb68712dc2786e918.zip
* eval.c (eval_init): lazy-str's third argument is optional.
Added lazy-stringp. Changing names of length-str-{gt,ge,lt,le} to be consistent with the >, >=, < and <= functions. * lib.c (lazy_stream_func): Greatly simplified implementation. The lazy list now continues by means of recursing via an optimized version of lazy_stream_cons called lazy_stream_cont. The environment structure is simplified to just hold the next item, rather than a pointless list. The pointless setting of lcons->lc.func to nil is also removed; this is always done by the caller. (lazy_stream_cont): New static function, similar to lazy_stream_cons, but optimized by not consing up a new function and new environment cell. (lazy_stream_cons): The environment for the update function is simplified to just a single cons. * txr.1: Documented lazy string functions and lazy-stream-cons.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/eval.c b/eval.c
index 501a20a0..77209599 100644
--- a/eval.c
+++ b/eval.c
@@ -2401,14 +2401,15 @@ void eval_init(void)
reg_fun(intern(lit("break-str"), user_package), func_n2(break_str));
reg_fun(intern(lit("lazy-stream-cons"), user_package), func_n1(lazy_stream_cons));
- reg_fun(intern(lit("lazy-str"), user_package), func_n3(lazy_str));
+ reg_fun(intern(lit("lazy-str"), user_package), func_n3o(lazy_str, 1));
+ reg_fun(intern(lit("lazy-stringp"), user_package), func_n1(lazy_stringp));
reg_fun(intern(lit("lazy-str-force-upto"), user_package), func_n2(lazy_str_force_upto));
reg_fun(intern(lit("lazy-str-force"), user_package), func_n1(lazy_str_force));
reg_fun(intern(lit("lazy-str-get-trailing-list"), user_package), func_n2(lazy_str_get_trailing_list));
- reg_fun(intern(lit("length-str-gt"), user_package), func_n2(length_str_gt));
- reg_fun(intern(lit("length-str-ge"), user_package), func_n2(length_str_ge));
- reg_fun(intern(lit("length-str-lt"), user_package), func_n2(length_str_lt));
- reg_fun(intern(lit("length-str-le"), user_package), func_n2(length_str_le));
+ reg_fun(intern(lit("length-str->"), user_package), func_n2(length_str_gt));
+ reg_fun(intern(lit("length-str->="), user_package), func_n2(length_str_ge));
+ reg_fun(intern(lit("length-str-<"), user_package), func_n2(length_str_lt));
+ reg_fun(intern(lit("length-str-<="), user_package), func_n2(length_str_le));
reg_fun(intern(lit("vector"), user_package), func_n1(vector));
reg_fun(intern(lit("vectorp"), user_package), func_n1(vectorp));