summaryrefslogtreecommitdiffstats
path: root/ramap.c
diff options
context:
space:
mode:
Diffstat (limited to 'ramap.c')
-rw-r--r--ramap.c33
1 files changed, 21 insertions, 12 deletions
diff --git a/ramap.c b/ramap.c
index 25a1df9..d00e400 100644
--- a/ramap.c
+++ b/ramap.c
@@ -538,6 +538,9 @@ SCM sc2array(s, ra, prot)
switch TYP7(ARRAY_V(res)) {
case tc7_vector:
break;
+ case tc7_bvect:
+ if (BOOL_T==s || BOOL_F==s) break;
+ goto mismatch;
case tc7_string:
if ICHRP(s) break;
goto mismatch;
@@ -1375,11 +1378,14 @@ SCM array_map(ra0, proc, lra)
ramapc(ramap_a, proc, ra0, lra, s_array_map);
}
return UNSPECIFIED;
-#ifdef CCLO
- case tc7_cclo:
- lra = cons(sc2array(proc,ra0,EOL), lra);
- proc = CCLO_SUBR(proc);
- goto tail;
+#if 1 /* def CCLO */
+ case tc7_specfun:
+ if (tc16_cclo==TYP16(proc)) {
+ lra = cons(sc2array(proc,ra0,EOL), lra);
+ proc = CCLO_SUBR(proc);
+ goto tail;
+ }
+ goto gencase;
#endif
}
}
@@ -1425,15 +1431,18 @@ SCM array_for_each(proc, ra0, lra)
ASSERT(BOOL_T==procedurep(proc), proc, ARG1, s_array_for_each);
tail:
switch TYP7(proc) {
- default:
+ default: gencase:
ramapc(rafe, proc, ra0, lra, s_array_for_each);
return UNSPECIFIED;
-#ifdef CCLO
- case tc7_cclo:
- lra = cons(ra0, lra);
- ra0 = sc2array(proc, ra0, EOL);
- proc = CCLO_SUBR(proc);
- goto tail;
+#if 1 /* def CCLO */
+ case tc7_specfun:
+ if (tc16_cclo==TYP16(proc)) {
+ lra = cons(ra0, lra);
+ ra0 = sc2array(proc, ra0, EOL);
+ proc = CCLO_SUBR(proc);
+ goto tail;
+ }
+ goto gencase;
#endif
}
}