Skip to content

Instantly share code, notes, and snippets.

@truongluu
Created May 15, 2022 08:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save truongluu/06e234d111dd86e92c6e331c79ba766c to your computer and use it in GitHub Desktop.
Save truongluu/06e234d111dd86e92c6e331c79ba766c to your computer and use it in GitHub Desktop.
Curry function
/***
* function sum(a,b,c) { return a +b + c;}
* const cSum = curry(sum)
* cSum(1, 2, 3) => 6
* cSum(1)(2)(3) => 6
* cSum(1)(2,3) => 6
*/
function curry(func) {
return (...args) => {
if(args.length >=func.length) {
return func.apply(null, args)
}
function recallFunc(...argsInner) {
if(argsInner.length >= func.length) {
return func.apply(null,argsInner);
}
return recallFunc.bind(null, ...argsInner);
}
return recallFunc.bind(null, ...args);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment