DEV Community

Discussion on: Currying in JS 🤠

Collapse
 
pnu profile image
Panu Ervamaa • Edited
const curry = (fn, ...args) =>
  args.length >= fn.length
    ? fn(...args)
    : (...x) => curry(fn, ...args, ...x);

const uncurry = (fn) => (...args) =>
  args.reduce((fn, arg) => fn(arg), fn);

const mul = (a, b) => a * b;
const curriedMul = curry(mul);
const mulBySeven = curriedMul(7);
const uncurriedMul = uncurry(curriedMul);

console.log(curriedMul(2)(3));    // 6
console.log(mulBySeven(11));      // 77
console.log(uncurriedMul(5, 7));  // 35