summaryrefslogtreecommitdiffstats
path: root/lib.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2014-02-02 15:22:49 -0800
committerKaz Kylheku <kaz@kylheku.com>2014-02-02 15:22:49 -0800
commit1d6ad5892120dd0ce3f1947ee87fe343fc932f0d (patch)
treed45fbe1a2ac898d768b075f0cfd6a401ddaef27c /lib.c
parentfd2690b7b18d46ea970f1ec828d7a35e31d4942b (diff)
downloadtxr-1d6ad5892120dd0ce3f1947ee87fe343fc932f0d.tar.gz
txr-1d6ad5892120dd0ce3f1947ee87fe343fc932f0d.tar.bz2
txr-1d6ad5892120dd0ce3f1947ee87fe343fc932f0d.zip
append can now take additional leading arguments before the list.
* eval.c (apply_frob_args): New static function. (apply_intrinsic): Process arguments with apply_frob_args. (eval_init): apply_intrinsic registered differently, as a variadic function with one mandatory arg. * lib.c (lastcons): New function. * lib.h (lastcons): Declared. * txr.1: Updated append documentation.
Diffstat (limited to 'lib.c')
-rw-r--r--lib.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib.c b/lib.c
index d2fa0147..09ca61c6 100644
--- a/lib.c
+++ b/lib.c
@@ -400,6 +400,16 @@ val *tail(val cons)
return cdr_l(cons);
}
+val *lastcons(val list)
+{
+ val *ret = 0;
+ while (consp(cdr(list))) {
+ ret = cdr_l(list);
+ list = cdr(list);
+ }
+ return ret;
+}
+
val *ltail(val *cons)
{
while (cdr(*cons))