Currying (curryfikacja)
Przekształcenie funkcji wielu argumentów w ciąg funkcji jednoargumentowych: add(a, b) staje się add(a)(b). W Haskellu jest domyślne (każda funkcja jest automatycznie curryfikowana), w JS, Pythonie i Ruby — ręczne.
Nazwa pochodzi od logika Haskella Curry'ego. Praktyczne zastosowanie to aplikacja częściowa: ustalasz część argumentów i dostajesz funkcję. const add5 = curry(add)(5); add5(10) // 15. Biblioteki funkcyjne: Lodash _.curry(), Ramda R.curry. Częsty wzorzec w Reakcie: procedury obsługi zdarzeń przyjmujące dane — onClick={() => deleteItem(id)} to ręczna aplikacja częściowa. Nie należy mylić z aplikacją częściową: currying zmienia kształt funkcji, a aplikacja częściowa wiąże wartości argumentów. We współczesnym JS funkcje strzałkowe i operator spread czynią składnię przyjazną. Currying w TypeScripcie to męka z rozbudowanymi typami generycznymi.