summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2016-03-27 09:41:12 -0700
committerKaz Kylheku <kaz@kylheku.com>2016-03-27 09:41:12 -0700
commit70203c5cdab161f2d12756ff382035efbbaef421 (patch)
tree4f67b9f661de3a67a547d3e15ba4e1b80ab9e7ef /eval.c
parent4d0ff5692b7da9f278681d69d8c4b5c37abdd4e3 (diff)
downloadtxr-70203c5cdab161f2d12756ff382035efbbaef421.tar.gz
txr-70203c5cdab161f2d12756ff382035efbbaef421.tar.bz2
txr-70203c5cdab161f2d12756ff382035efbbaef421.zip
Adding rightmost item search functions.
* eval.c (eval_init): Registered intrinsics rmemq, rmemql, rmemqual, rmember, rmember-if, rposqual, rposql, rposq, rpos, rpos-if, rfind, rfind-if and rsearch. * lib.c (rmemq, rmemql, rmemqual, rmember, rmember-if, rposqual, rposql, rposq, rpos, rpos-if, rfind, rfind-if, rsearch): New functions. (rsearch_list): New static function. (search): Omit unreachable return statement. * lib.h (rmemq, rmemql, rmemqual, rmember, rmember-if, rposqual, rposql, rposq, rpos, rpos-if, rfind, rfind-if, rsearch): Declared. * txr.1: Documented.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/eval.c b/eval.c
index 51530dcc..28a7a921 100644
--- a/eval.c
+++ b/eval.c
@@ -4771,8 +4771,13 @@ void eval_init(void)
reg_fun(memq_s, func_n2(memq));
reg_fun(memql_s, func_n2(memql));
reg_fun(memqual_s, func_n2(memqual));
+ reg_fun(intern(lit("rmemq"), user_package), func_n2(rmemq));
+ reg_fun(intern(lit("rmemql"), user_package), func_n2(rmemql));
+ reg_fun(intern(lit("rmemqual"), user_package), func_n2(rmemqual));
reg_fun(intern(lit("member"), user_package), func_n4o(member, 2));
+ reg_fun(intern(lit("rmember"), user_package), func_n4o(rmember, 2));
reg_fun(intern(lit("member-if"), user_package), func_n3o(member_if, 2));
+ reg_fun(intern(lit("rmember-if"), user_package), func_n3o(rmember_if, 2));
reg_fun(intern(lit("remq"), user_package), func_n2(remq));
reg_fun(intern(lit("remql"), user_package), func_n2(remql));
reg_fun(intern(lit("remqual"), user_package), func_n2(remqual));
@@ -4789,10 +4794,15 @@ void eval_init(void)
reg_fun(intern(lit("countq"), user_package), func_n2(countq));
reg_fun(intern(lit("count-if"), user_package), func_n3o(count_if, 2));
reg_fun(intern(lit("posqual"), user_package), func_n2(posqual));
+ reg_fun(intern(lit("rposqual"), user_package), func_n2(rposqual));
reg_fun(intern(lit("posql"), user_package), func_n2(posql));
+ reg_fun(intern(lit("rposql"), user_package), func_n2(rposql));
reg_fun(intern(lit("posq"), user_package), func_n2(posq));
+ reg_fun(intern(lit("rposq"), user_package), func_n2(rposq));
reg_fun(intern(lit("pos"), user_package), func_n4o(pos, 2));
+ reg_fun(intern(lit("rpos"), user_package), func_n4o(rpos, 2));
reg_fun(intern(lit("pos-if"), user_package), func_n3o(pos_if, 2));
+ reg_fun(intern(lit("rpos-if"), user_package), func_n3o(rpos_if, 2));
reg_fun(intern(lit("some"), user_package), func_n3o(some_satisfy, 1));
reg_fun(intern(lit("all"), user_package), func_n3o(all_satisfy, 1));
reg_fun(intern(lit("none"), user_package), func_n3o(none_satisfy, 1));
@@ -5137,10 +5147,12 @@ void eval_init(void)
reg_fun(intern(lit("sort"), user_package), func_n3o(sort, 1));
reg_fun(intern(lit("shuffle"), user_package), func_n1(shuffle));
reg_fun(intern(lit("find"), user_package), func_n4o(find, 2));
- reg_fun(intern(lit("multi-sort"), user_package), func_n3o(multi_sort, 2));
+ reg_fun(intern(lit("rfind"), user_package), func_n4o(rfind, 2));
reg_fun(intern(lit("find-if"), user_package), func_n3o(find_if, 2));
+ reg_fun(intern(lit("rfind-if"), user_package), func_n3o(rfind_if, 2));
reg_fun(intern(lit("find-max"), user_package), func_n3o(find_max, 1));
reg_fun(intern(lit("find-min"), user_package), func_n3o(find_min, 1));
+ reg_fun(intern(lit("multi-sort"), user_package), func_n3o(multi_sort, 2));
reg_fun(intern(lit("set-diff"), user_package), func_n4o(set_diff, 2));
reg_fun(intern(lit("seqp"), user_package), func_n1(seqp));
@@ -5155,6 +5167,7 @@ void eval_init(void)
reg_fun(intern(lit("dwim-del"), system_package), func_n2(dwim_del));
reg_fun(intern(lit("update"), user_package), func_n2(update));
reg_fun(intern(lit("search"), user_package), func_n4o(search, 2));
+ reg_fun(intern(lit("rsearch"), user_package), func_n4o(rsearch, 2));
reg_fun(intern(lit("where"), user_package), func_n2(where));
reg_fun(intern(lit("select"), user_package), func_n2(sel));