UNPKG

moy-fp

Version:
26 lines (23 loc) 1.07 kB
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