Curry a Function

Curry a function so partial application returns a new function until every argument is supplied, enabling reusable configured variants.

JavascriptData Integrity

Code

snippet
export function curry(fn) {
  const arity = fn.length;
  return function curried(...args) {
    if (args.length >= arity) {
      return fn.apply(this, args);
    }
    return function next(...more) {
      return curried.apply(this, args.concat(more));
    };
  };
}