Natomiast gdy ich liczba przekroczy sumę parametrów, wywoływana jest pierwotna funkcja.

Przykład JavaScript

// ES5 function curry(fn) { var init_args = [].slice.call(arguments, 1); var len = fn.length; return function() { var args = init_args.slice(); function call() { args = args.concat([].slice.call(arguments)); if (args.length >= len) { return fn.apply(null, args); } else { return call;

return call.apply(null, arguments);

// ES6 function curry(fn, ...init_args) { var len = fn.length; return function() { var args = init_args.slice(); function call(...fn_args) { args = args.concat(fn_args); if (args.length >= len) { return fn.apply(null, args); } else { return call;

return call.apply(null, arguments);

function add(a,b,c) { return a+b+c; } var curry_add = curry(add); console.log(curry_add(2,3,4)); // 9 console.log(curry_add(2)(3)(4)); // 9 console.log(curry_add(2,3)(4)); // 9

Przypisy

Bibliografia

Kategoria:Rachunek lambda Kategoria:Programowanie funkcyjne