diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2014-02-02 15:22:49 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2014-02-02 15:22:49 -0800 |
commit | 1d6ad5892120dd0ce3f1947ee87fe343fc932f0d (patch) | |
tree | d45fbe1a2ac898d768b075f0cfd6a401ddaef27c /lib.c | |
parent | fd2690b7b18d46ea970f1ec828d7a35e31d4942b (diff) | |
download | txr-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.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -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)) |