Curry a function
JavaScript
const curry = (fn, ...args) => (fn.length <= args.length ? fn(...args) : curry.bind(null, fn, ...args))
Examples
const sum = (a, b, c) => a + b + c
curry(sum)(1)(2)(3) // 6
curry(sum)(1, 2, 3) // 6
curry(sum, 1)(2, 3) // 6
curry(sum, 1)(2)(3) // 6
curry(sum, 1, 2)(3) // 6
curry(sum, 1, 2, 3) // 6