diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2021-12-22 07:21:26 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2021-12-22 07:21:26 -0800 |
commit | e2ff7c1811deb19d0dab2142b99cfcb4b30e62df (patch) | |
tree | 25dcd25d5a48f60fc8c372865329027248268422 /lib.c | |
parent | 638293d5281db1276a3b64f2eb969ad99c0ee9f3 (diff) | |
download | txr-e2ff7c1811deb19d0dab2142b99cfcb4b30e62df.tar.gz txr-e2ff7c1811deb19d0dab2142b99cfcb4b30e62df.tar.bz2 txr-e2ff7c1811deb19d0dab2142b99cfcb4b30e62df.zip |
The pairlis function comes to TXR Lisp.
* eval.c (eval_init): Register pairlis intrinsic.
* lib.c, lib.h (pairlis): New function.
* tests/012/seq.tl: New test cases.
* txr.1: Documented.
* stdlib/doc-syms.tl: Updated.
Diffstat (limited to 'lib.c')
-rw-r--r-- | lib.c | 19 |
1 files changed, 19 insertions, 0 deletions
@@ -10103,6 +10103,25 @@ val copy_alist(val list) return out; } +val pairlis(val keys, val values, val alist_in) +{ + val self = lit("pairlis"); + val alist = default_null_arg(alist_in); + seq_iter_t sik, siv; + val key, value; + list_collect_decl (out, ptail); + + seq_iter_init(self, &sik, keys); + seq_iter_init(self, &siv, values); + + while (seq_get(&sik, &key) && seq_get(&siv, &value)) + ptail = list_collect(ptail, cons(key, value)); + + list_collect_nconc(ptail, alist); + + return out; +} + val mapcar_listout(val fun, val seq) { val self = lit("mapcar"); |