Skip to content

Instantly share code, notes, and snippets.

@kiddkai
Created September 27, 2013 07:13
Show Gist options
  • Save kiddkai/6725125 to your computer and use it in GitHub Desktop.
Save kiddkai/6725125 to your computer and use it in GitHub Desktop.

Revisions

  1. kiddkai created this gist Sep 27, 2013.
    32 changes: 32 additions & 0 deletions currying.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,32 @@
    /**
    * curry
    *
    * var curried = curry(function(a, b, c) {
    * console.log(a+b+c);
    * });
    *
    *
    * curried(2)(2)(2); // => 6
    * curried(2,2)(2); // => 6
    * curried(2,2,2); // => 6
    *
    */

    function curry(fn) {
    var totalArgsLength = fn.length;
    var params = [];

    function genCurried() {
    var args = [].slice.call(arguments);
    params = params.concat(args);

    if (params.length < totalArgsLength) {
    return genCurried;
    }
    else {
    return fn.apply(this, params);
    }
    }

    return genCurried;
    }