fix x⊸≍˘list & ≍⟜x˘list on non-atom x
This commit is contained in:
parent
92be360412
commit
5192a1d466
@ -693,6 +693,16 @@ static NOINLINE B rank2_empty(B f, B w, ur wk, B x, ur xk, u32 chr) {
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SHOULD_INLINE bool unpack_unit(B* r) {
|
||||||
|
B x = *r;
|
||||||
|
if (isAtm(x)) return true;
|
||||||
|
if (RNK(x)!=0) return false;
|
||||||
|
B x2 = IGet(x,0);
|
||||||
|
decG(x);
|
||||||
|
*r = x2;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
NOINLINE B for_cells_AS(B f, B w, B x, ur wcr, ur wr, u32 chr) { // F⟜x⎉wcr w; array w, wr>0, 0≤wcr<wr, k≡wr-wcr
|
NOINLINE B for_cells_AS(B f, B w, B x, ur wcr, ur wr, u32 chr) { // F⟜x⎉wcr w; array w, wr>0, 0≤wcr<wr, k≡wr-wcr
|
||||||
assert(isArr(w));
|
assert(isArr(w));
|
||||||
ur wk = wr-wcr; assert(wk>0 && wcr<wr);
|
ur wk = wr-wcr; assert(wk>0 && wcr<wr);
|
||||||
@ -704,6 +714,7 @@ NOINLINE B for_cells_AS(B f, B w, B x, ur wcr, ur wr, u32 chr) { // F⟜x⎉wcr
|
|||||||
case n_ltack: dec(x); return w;
|
case n_ltack: dec(x); return w;
|
||||||
case n_rtack: return const_cells(w, wk, wsh, x, chr);
|
case n_rtack: return const_cells(w, wk, wsh, x, chr);
|
||||||
case n_couple: if (RNK(w)==1) {
|
case n_couple: if (RNK(w)==1) {
|
||||||
|
if (!unpack_unit(&x)) break;
|
||||||
x = taga(arr_shVec(reshape_one(IA(w), x)));
|
x = taga(arr_shVec(reshape_one(IA(w), x)));
|
||||||
return interleave_cells(w, x, 1);
|
return interleave_cells(w, x, 1);
|
||||||
} break;
|
} break;
|
||||||
@ -755,6 +766,7 @@ NOINLINE B for_cells_SA(B f, B w, B x, ur xcr, ur xr, u32 chr) { // w⊸F⎉xcr
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case n_couple: if (RNK(x)==1) {
|
case n_couple: if (RNK(x)==1) {
|
||||||
|
if (!unpack_unit(&w)) break;
|
||||||
w = taga(arr_shVec(reshape_one(IA(x), w)));
|
w = taga(arr_shVec(reshape_one(IA(x), w)));
|
||||||
return interleave_cells(w, x, 1);
|
return interleave_cells(w, x, 1);
|
||||||
} break;
|
} break;
|
||||||
|
|||||||
@ -129,6 +129,11 @@
|
|||||||
!"≍: 𝕨 and 𝕩 must have equal shapes (⟨4⟩ ≡ ≢𝕨, ⟨5⟩ ≡ ≢𝕩)" % (3‿4⥊2) ≍˘ 3‿5⥊2
|
!"≍: 𝕨 and 𝕩 must have equal shapes (⟨4⟩ ≡ ≢𝕨, ⟨5⟩ ≡ ≢𝕩)" % (3‿4⥊2) ≍˘ 3‿5⥊2
|
||||||
!"≍: 𝕨 and 𝕩 must have equal shapes (2‿2‿2 ≡ ≢𝕨, 2‿3‿2 ≡ ≢𝕩)" % (3‿2‿2‿2⥊2) ≍˘ 3‿2‿3‿2⥊2
|
!"≍: 𝕨 and 𝕩 must have equal shapes (2‿2‿2 ≡ ≢𝕨, 2‿3‿2 ≡ ≢𝕩)" % (3‿2‿2‿2⥊2) ≍˘ 3‿2‿3‿2⥊2
|
||||||
!"≍: 𝕨 and 𝕩 must have equal shapes (4‿1 ≡ ≢𝕨, ⟨4⟩ ≡ ≢𝕩)" % (3‿4‿1⥊0) ≍˘ 3‿4⥊0
|
!"≍: 𝕨 and 𝕩 must have equal shapes (4‿1 ≡ ≢𝕨, ⟨4⟩ ≡ ≢𝕩)" % (3‿4‿1⥊0) ≍˘ 3‿4⥊0
|
||||||
|
(<"ab") ≍˘ 2⥊"cd" %% 2‿2⥊⟨"ab", 'c', "ab", 'd'⟩
|
||||||
|
(<"ab") ≍˘˜ 2⥊"cd" %% 2‿2⥊⟨'c', "ab", 'd', "ab"⟩
|
||||||
|
"ab" ≍⎉1 4‿2⥊"cd" %% 4‿2‿2⥊"abcdabcdabcdabcd"
|
||||||
|
!"≍: 𝕨 and 𝕩 must have equal shapes (⟨⟩ ≡ ≢𝕨, ⟨2⟩ ≡ ≢𝕩)" % ≍⟜"ab"˘ "cd"
|
||||||
|
!"≍: 𝕨 and 𝕩 must have equal shapes (⟨2⟩ ≡ ≢𝕨, ⟨⟩ ≡ ≢𝕩)" % "ab"⊸≍˘ "cd"
|
||||||
|
|
||||||
(
|
(
|
||||||
%USE IS_HEAPVERIFY
|
%USE IS_HEAPVERIFY
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user