summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/eval.c b/eval.c
index 91220930..b5eb32dc 100644
--- a/eval.c
+++ b/eval.c
@@ -5874,6 +5874,16 @@ static val seq_like(val ziparg0, varg args)
return seq_finish(&bu);
}
+static val zip_strcat(varg args)
+{
+ seq_build_t bu;
+ cnum index = 0;
+ seq_build_strcat_init(&bu);
+ while (args_more(args, index))
+ seq_add(&bu, args_get(args, &index));
+ return seq_finish(&bu);
+}
+
static val zipv(varg zipargs)
{
if (!args_more(zipargs, 0))
@@ -5884,18 +5894,10 @@ static val zipv(varg zipargs)
val func = nil;
switch (type(ziparg0)) {
- case NIL:
- case CONS:
- case LCONS:
- func = list_f;
- break;
case STR:
case LSTR:
case LIT:
- func = join_f;
- break;
- case VEC:
- func = func_n0v(vectorv);
+ func = func_n0v(zip_strcat);
break;
default:
func = func_f0v(ziparg0, seq_like);