diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2023-10-05 14:56:33 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2023-10-05 14:56:33 -0700 |
commit | 1a8ca97932bc4c923ba7d5f2ae27b2bf754884b8 (patch) | |
tree | 6a9c0cb0f36a4a422140359123abed5be407fbdd /eval.c | |
parent | 3b87081903c42cdfe0eaf58629b90a83351b7a87 (diff) | |
download | txr-1a8ca97932bc4c923ba7d5f2ae27b2bf754884b8.tar.gz txr-1a8ca97932bc4c923ba7d5f2ae27b2bf754884b8.tar.bz2 txr-1a8ca97932bc4c923ba7d5f2ae27b2bf754884b8.zip |
New: length-list-<, length-<
These are functions for testing whether a list or
sequence is shorter than a given integer. This is cheaper
than calculating the length of lists, which is in
some cases impossible if they are infinite.
A length-str-< function already exists, useful
with lazy strings.
length-< uses length-list-< or length-str-<
as appropriate
* lib.[ch] (length_list_lt, length_lt): New functions.
* eval.c (eval_init): length-list-< and length-<
intrinsics registered.
* tests/012/seq.tl: New tests.
* txr.1: Documented.
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -7280,6 +7280,7 @@ void eval_init(void) reg_fun(intern(lit("proper-list-p"), user_package), proper_list_p_f); } reg_fun(intern(lit("length-list"), user_package), func_n1(length_list)); + reg_fun(intern(lit("length-list-<"), user_package), func_n2(length_list_lt)); reg_fun(intern(lit("mapcar"), user_package), func_n1v(mapcarv)); reg_fun(intern(lit("mapcar*"), user_package), func_n1v(lazy_mapcarv)); @@ -7739,6 +7740,7 @@ void eval_init(void) reg_fun(intern(lit("str-seq"), user_package), func_n1(str_seq)); reg_fun(intern(lit("length"), user_package), length_f); reg_fun(intern(lit("len"), user_package), length_f); + reg_fun(intern(lit("length-<"), user_package), func_n2(length_lt)); reg_fun(intern(lit("empty"), user_package), func_n1(empty)); reg_fun(intern(lit("copy"), user_package), func_n1(copy)); reg_fun(intern(lit("sub"), user_package), func_n3o(sub, 1)); |