diff options
Diffstat (limited to 'ramap.c')
-rw-r--r-- | ramap.c | 33 |
1 files changed, 21 insertions, 12 deletions
@@ -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 } } |