fix pureFn
This commit is contained in:
parent
2202200a6e
commit
d8751e709f
@ -42,7 +42,7 @@ C32Arr* toC32Arr(B x) {
|
|||||||
B r = m_c32arrc(x);
|
B r = m_c32arrc(x);
|
||||||
u32* rp = c32arr_ptr(r);
|
u32* rp = c32arr_ptr(r);
|
||||||
usz ia = a(r)->ia;
|
usz ia = a(r)->ia;
|
||||||
BS2B xgetU = TI(x).get;
|
BS2B xgetU = TI(x).getU;
|
||||||
for (usz i = 0; i < ia; i++) rp[i] = o2c(xgetU(x,i));
|
for (usz i = 0; i < ia; i++) rp[i] = o2c(xgetU(x,i));
|
||||||
dec(x);
|
dec(x);
|
||||||
return c(C32Arr,r);
|
return c(C32Arr,r);
|
||||||
|
|||||||
@ -36,7 +36,7 @@ F64Arr* toF64Arr(B x) {
|
|||||||
B r = m_f64arrc(x);
|
B r = m_f64arrc(x);
|
||||||
f64* rp = f64arr_ptr(r);
|
f64* rp = f64arr_ptr(r);
|
||||||
usz ia = a(r)->ia;
|
usz ia = a(r)->ia;
|
||||||
BS2B xgetU = TI(x).get;
|
BS2B xgetU = TI(x).getU;
|
||||||
for (usz i = 0; i < ia; i++) rp[i] = o2f(xgetU(x,i));
|
for (usz i = 0; i < ia; i++) rp[i] = o2f(xgetU(x,i));
|
||||||
dec(x);
|
dec(x);
|
||||||
return c(F64Arr,r);
|
return c(F64Arr,r);
|
||||||
|
|||||||
@ -38,7 +38,7 @@ I32Arr* toI32Arr(B x) {
|
|||||||
B r = m_i32arrc(x);
|
B r = m_i32arrc(x);
|
||||||
i32* rp = i32arr_ptr(r);
|
i32* rp = i32arr_ptr(r);
|
||||||
usz ia = a(r)->ia;
|
usz ia = a(r)->ia;
|
||||||
BS2B xgetU = TI(x).get;
|
BS2B xgetU = TI(x).getU;
|
||||||
for (usz i = 0; i < ia; i++) rp[i] = o2i(xgetU(x,i));
|
for (usz i = 0; i < ia; i++) rp[i] = o2i(xgetU(x,i));
|
||||||
dec(x);
|
dec(x);
|
||||||
return c(I32Arr,r);
|
return c(I32Arr,r);
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
|
|
||||||
bool isPureFn(B x) { // doesn't consume
|
bool isPureFn(B x) { // doesn't consume
|
||||||
if (!isCallable(x)) return true;
|
if (isCallable(x)) {
|
||||||
if (v(x)->flags) return true;
|
if (v(x)->flags) return true;
|
||||||
B2B dcf = TI(x).decompose;
|
B2B dcf = TI(x).decompose;
|
||||||
B xd = dcf(inc(x));
|
B xd = dcf(inc(x));
|
||||||
@ -12,6 +12,12 @@ bool isPureFn(B x) { // doesn't consume
|
|||||||
usz xdia = a(xd)->ia;
|
usz xdia = a(xd)->ia;
|
||||||
for (i32 i = 1; i<xdia; i++) if(!isPureFn(xdp[i])) { dec(xd); return false; }
|
for (i32 i = 1; i<xdia; i++) if(!isPureFn(xdp[i])) { dec(xd); return false; }
|
||||||
dec(xd); return true;
|
dec(xd); return true;
|
||||||
|
} else if (isArr(x)) {
|
||||||
|
usz ia = a(x)->ia;
|
||||||
|
BS2B xgetU = TI(x).getU;
|
||||||
|
for (usz i = 0; i < ia; i++) if (!isPureFn(xgetU(x,i))) return false;
|
||||||
|
return true;
|
||||||
|
} else return isNum(x) || isC32(x);
|
||||||
}
|
}
|
||||||
|
|
||||||
B homFil1(B f, B r, B xf) {
|
B homFil1(B f, B r, B xf) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user