3 ms·
Here's my take: function curry(fn, args) { if (typeof args == "undefined" || args.length < fn.length) return function() { if (typeof args == "unde
by marcmarc 17y ago
Here's my take:
function curry(fn, args) {
if (typeof args == "undefined" || args.length < fn.length)
return function() {
if (typeof args == "undefined")
args = [];
return curry(fn, args.concat(Array.prototype.slice.call(arguments)));
};
return fn.apply(this, args);
}
var add = curry(function(a, b, c) { return a + b + c;});
- jganetsk 17y agoBoth of our implementations have broken this. Damn you, Javascript this. In principle, these two lines of code should always produce the same result: foo.bar(1,2) and foo.bar(1)(2) And they won't necessarily in our case, if the function uses this.
- deleted 17y ago[deleted]
- shaunxcode 17y agoHere is curry in php 5.3 function curry(){ $args = func_get_args(); $fn = array_shift($args); return function() use(&$fn, &$args) { $nargs = func_get_args(); foreach($nargs as $narg) $args[] = $narg; return call_user_func_array($fn, $args); }; } $add20 = curry(function($a, $b){return $a + $b;}, 20); echo $add20(5); #25