[Home] > Snippets  > Languages  > JavaScript  > Fn  >  Curry a function

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