diff --git a/src/builtins/sfns.c b/src/builtins/sfns.c index 9990aec4..2221d3cf 100644 --- a/src/builtins/sfns.c +++ b/src/builtins/sfns.c @@ -363,14 +363,14 @@ B pick_c2(B t, B w, B x) { if (!(maskD&c) && undefMask==0) undefMask = (~0ULL)<ia; + if (xe!=el_B) { + data = tyany_ptr(x); + if (xe==el_bit) { + i32 left = ia&63; + len = (ia>>6)*8; + if (left) { + u64 last = ((u64*)data)[len/8]; + u64 exp = (1ULL<c1(f, x)); + if (isFun(f)) return VALIDATE(VRES(c(Fun,f)->c1(f, x))); return c1F(f, x); } static B c2(B f, B w, B x) { // BQN-call f dyadically; consumes w,x - if (isFun(f)) return VALIDATE(c(Fun,f)->c2(f, w, x)); + if (isFun(f)) return VALIDATE(VRES(c(Fun,f)->c2(f, w, x))); return c2F(f, w, x); } static void errMd(B x) { if(RARE(isMd(x))) thrM("Calling a modifier"); }