functionalscript
Version:
FunctionalScript is a purely functional subset of JavaScript
19 lines (18 loc) • 771 B
JavaScript
export const join = (separator) => value => prior => `${prior}${separator}${value}`;
export const concat = i => acc => `${acc}${i}`;
export const logicalNot = v => !v;
export const strictEqual = (a) => (b) => a === b;
export const stateScanToScan = (op) => (prior) => i => {
const [o, s] = op(prior)(i);
return [o, stateScanToScan(op)(s)];
};
export const foldToScan = (fold) => (prior) => i => {
const result = fold(i)(prior);
return [result, foldToScan(fold)(result)];
};
export const reduceToScan = (op) => init => [init, foldToScan(op)(init)];
export const addition = a => b => a + b;
export const min = a => b => a < b ? a : b;
export const max = a => b => a > b ? a : b;
export const increment = addition(1);
export const counter = () => increment;