From 6cf10bb9919aa27735f7d13539aaa871400777e4 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Thu, 2 Sep 2021 06:59:47 -0700 Subject: New function: delcons. * eval.c (eval_init): Register delcons intrinsic. * lib.[ch] (delcons): New function. * tests/010/cons.tl: New file. * txr.1: Documented. * stdlib/doc-syms.tl: Updated. --- lib.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'lib.c') diff --git a/lib.c b/lib.c index 796853ec..68a12ae6 100644 --- a/lib.c +++ b/lib.c @@ -2796,6 +2796,28 @@ val tailp(val obj, val list) return t; } +val delcons(val cons, val list) +{ + val iter = list; + + if (!consp(cons)) + return list; + + if (cons == iter) + return cdr(iter); + + while (consp(iter)) { + val d = us_cdr(iter); + if (cons == d) { + us_rplacd(iter, us_cdr(cons)); + break; + } + iter = d; + } + + return list; +} + val memq(val obj, val list) { val list_orig = list; -- cgit v1.2.3