Self-currying

JavaScript, Prototype

Jump to: navigation, search

Сабж.

// Original code by James Coglan

Function.prototype.toSelfCurrying = function(n) {
    n = n || this.length;
    var f = this;
    return function() {
        if (arguments.length < n)
            return f.curry.apply(arguments.callee, arguments);
        return f.apply(this, arguments);
    };
};

Например

var adder = function(a, b, c) {
    return a + b + c;
};

var add = adder.toSelfCurrying();

add(1)(2)(3); // -> 6
add('a', 'b')('c'); // -> 'abc'

Personal tools
ссылка