moy-fp
Version:
A functional programming library.
26 lines (23 loc) • 1.07 kB
JavaScript
import curry from './curry'
/**
* Number -> ((a, b, ..., m) -> n) -> ((a, b, ..., m) -> n)
*/
const nAry = curry(
(n, fn) => {
switch(n){
case 0: return curry(() => fn());
case 1: return curry(a0 => fn(a0));
case 2: return curry((a0, a1) => fn(a0, a1));
case 3: return curry((a0, a1, a2) => fn(a0, a1, a2));
case 4: return curry((a0, a1, a2, a3) => fn(a0, a1, a2, a3));
case 5: return curry((a0, a1, a2, a3, a4) => fn(a0, a1, a2, a3, a4));
case 6: return curry((a0, a1, a2, a3, a4, a5) => fn(a0, a1, a2, a3, a4, a5));
case 7: return curry((a0, a1, a2, a3, a4, a5, a6) => fn(a0, a1, a2, a3, a4, a5, a6));
case 8: return curry((a0, a1, a2, a3, a4, a5, a6, a7) => fn(a0, a1, a2, a3, a4, a5, a6, a7));
case 9: return curry((a0, a1, a2, a3, a4, a5, a6, a7, a8) => fn(a0, a1, a2, a3, a4, a5, a6, a7, a8));
case 10: return curry((a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) => fn(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9));
default: return curry((...args) => fn(...args));
}
}
)
export default nAry