From c2032024f5e5121dba9a629f5e6a182ca5d45f16 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Fri, 9 Feb 2024 06:25:11 -0800 Subject: New function: cons-find. * eval.c (cons_find): Static function removed; a new one is implemented in lib.c. (eval_init): Register cons-find intrinsic. * lib.c (cons_find_rec): New static function. (cons_find): New function. * lib.h (cons_find): Declared. * tests/012/cons.tl: New file. * txr.1: Documented cons-find together with tree-find. Document that tree-find's test-fun argument is optional, defaulting to equal. --- eval.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index 828ba73e..52bfe4af 100644 --- a/eval.c +++ b/eval.c @@ -4142,18 +4142,6 @@ static val transform_op(val forms, val syms, val rg) } } -static val cons_find(val obj, val structure, val test) -{ - uses_or2; - - if (funcall2(test, obj, structure)) - return structure; - if (atom(structure)) - return nil; - return or2(cons_find(obj, car(structure), test), - cons_find(obj, cdr(structure), test)); -} - static val supplement_op_syms(val ssyms) { list_collect_decl (outsyms, tl); @@ -7370,6 +7358,7 @@ void eval_init(void) reg_fun(intern(lit("remove-if*"), user_package), func_n3o(remove_if_lazy, 2)); reg_fun(intern(lit("keep-if*"), user_package), func_n3o(keep_if_lazy, 2)); reg_fun(intern(lit("tree-find"), user_package), func_n3o(tree_find, 2)); + reg_fun(intern(lit("cons-find"), user_package), func_n3o(cons_find, 2)); reg_fun(intern(lit("countqual"), user_package), func_n2(countqual)); reg_fun(intern(lit("countql"), user_package), func_n2(countql)); reg_fun(intern(lit("countq"), user_package), func_n2(countq)); -- cgit v1.2.3