From a229461d0aff75401d3164c286a5f0960238199e Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Tue, 21 Jan 2014 21:27:49 -0800 Subject: * eval.c (mapcarv, mappendv): Convert output to type of leftmost input sequence. * lib.c (make_like): New function. (reverse, remq, remql, remqual, remove_if, keep_if, mapcar, mapcon, mappend, set_diff): Convert output list to type of leftmost input sequence. * lib.h (make_like): Declared. * txr.1: Documented. --- eval.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index e43bd2cc..8ac48da8 100644 --- a/eval.c +++ b/eval.c @@ -1828,6 +1828,7 @@ val mapcarv(val fun, val list_of_lists) return mapcar(fun, car(list_of_lists)); } else { val lofl = copy_list(list_of_lists); + val list_orig = car(list_of_lists); list_collect_decl (out, otail); for (;;) { @@ -1837,7 +1838,7 @@ val mapcarv(val fun, val list_of_lists) for (iter = lofl; iter; iter = cdr(iter)) { val list = car(iter); if (!list) - return out; + return make_like(out, list_orig); list_collect(atail, car(list)); *car_l(iter) = cdr(list); } @@ -1853,6 +1854,7 @@ static val mappendv(val fun, val list_of_lists) return mappend(fun, car(list_of_lists)); } else { val lofl = copy_list(list_of_lists); + val list_orig = car(list_of_lists); list_collect_decl (out, otail); for (;;) { @@ -1862,7 +1864,7 @@ static val mappendv(val fun, val list_of_lists) for (iter = lofl; iter; iter = cdr(iter)) { val list = car(iter); if (!list) - return out; + return make_like(out, list_orig); list_collect(atail, car(list)); *car_l(iter) = cdr(list); } -- cgit v1.2.3