=> nil

Powyższe funkcje dla uproszczenia przykładów, wywołują funkcje zwracaną przez curry od razu po wywołaniu wynikowej funkcji. Poprawną funkcją curry (tak zazwyczaj jest ona zaimplementowana w bibliotekach w różnych językach) powinno być zwracanie funkcji, dopóki liczba argumentów nie jest równa lub większa liczbie argumentów funkcji przekazanej jako argument. W przypadku funkcji, która przyjmuje dowolną liczbę argumentów zakłada się, że jest to zero. Czyli poprawna funkcji curry (w języku JavaScript) powinna się zachowywać tak:

function add(a, b, c, d) { return a + b + c + d; } var fn_1 = curry(add, 1); var fn_2 = fn_1(2, 3); var v = fn_2(4); // v == 10

Poniżej funkcja curry w języku JavaScript, która spełnia ten warunek:

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(to_array(arguments)); if (args.length >= len) { return fn.apply(null, args); } else { return call;

return call.apply(null,