Curry

August 13, 2024

curry()

implement curry()

const curry = (fn) => { return function curried(...args) { if (args.length >= fn.length) { fn(...args) } else { return (...newArgs) => { return curried(...args, ...newArgs) } } } }

curry() with placeholder

implement curry() which also supports placeholder.

const curry = (fn) => { return function curried(...args) { if (args.length >= fn.length && !args.includes(curry.placeholder)) { fn(...args) } else { return (...newArgs) => { return curried( ...args.map((arg) => arg === curry.placeholder ? newArgs.shift() : arg ), ...newArgs ) } } } } curry.placeholder = Symbol()