Currying là khi bạn chia nhỏ một hàm có nhiều đối số thành một chuỗi các hàm có một phần đối số. Đây là một ví dụ trong JavaScript:
function add (a, b) {
return a + b;
}
add(3, 4); // returns 7
Đây là một hàm nhận hai đối số, a và b và trả về tổng của chúng. Bây giờ chúng ta sẽ “curry” hàm này:
function add (a) {
return function (b) {
return a + b;
}
}
Trong đại số học, việc xử lý các hàm có nhiều đối số (hoặc tương đương với một đối số là N-tuple) hơi không phù hợp.
Vì vậy, làm thế nào để bạn đối phó với một cái gì đó bạn muốn diễn đạt một cách tự nhiên, chẳng hạn như, f (x, y)?
Vâng, bạn coi điều đó tương đương với f (x) (y) - f (x), gọi nó là g, là một hàm, và bạn áp dụng hàm đó cho y.
Nói cách khác, bạn chỉ có các hàm nhận một đối số - nhưng một số hàm trong số đó trả về các hàm khác (CŨNG nhận một đối số).