functionalscript
Version:
FunctionalScript is a purely functional subset of JavaScript
81 lines (80 loc) • 2.02 kB
JavaScript
import { index3, index5 } from "../../function/compare/module.f.js";
const child = (item) => item[1][item[0]];
export const find = (c) => {
const i3 = index3(c);
const i5 = index5(c);
const f = (tail) => (node) => {
const append = index => {
const first = [index, node];
return f({ first, tail })(child(first));
};
const done = index => ({ first: [index, node], tail });
switch (node.length) {
case 1: {
return done(i3(node[0]));
}
case 2: {
return done(i5(node));
}
case 3: {
const i = i3(node[1]);
switch (i) {
case 0:
case 2: {
return append(i);
}
case 1: {
return done(i);
}
}
}
case 5: {
const i = i5([node[1], node[3]]);
switch (i) {
case 0:
case 2:
case 4: {
return append(i);
}
case 1:
case 3: {
return done(i);
}
}
}
}
};
return f(null);
};
export const isFound = ([i]) => {
switch (i) {
case 1:
case 3: {
return true;
}
default: {
return false;
}
}
};
export const value = ([i, r]) => {
switch (i) {
case 1: {
switch (r.length) {
case 1:
case 2: {
return r[0];
}
default: {
return r[1];
}
}
}
case 3: {
return r.length === 2 ? r[1] : r[3];
}
default: {
return null;
}
}
};