Taki sposb pisania funkcji umożliwia partial application
czyli dostarczanie funkcji argumentow jeden po drugim w rożnych miejscach aplikacji. W językach typowo funkcyjnych taki currying
jest automatyczny. W JS, ktory jest semi-funkcyjny trzeba to zrobić jawnie jeśli chcemy z tego skorzystać. W praktyce myśl o takiej funkcji nie jako funkcji, ktora zwraca funkcję, ktora zwraca funkcję (choc to technicznie prawda) ale raczej jako o funkcji, ktra przyjmuje 3 argumenty, gdzie nie musisz ich podawać wszyskich na raz.
Coś takiego:
const fnA = a => b => c => {}
// Wywołanie pełne:
const result = fnA(1)(2)(3)
jest z grubsza bardziej funkcjonalnym (pun intended) odpowiednikiem tego:
const fnB = (a, b, c) => {}
// Wywołanie:
const result = fnB(1, 2, 3)
bo można tego użyć na wiele rożnych sposobow - wywołać z pierwszym parametrem, przekazać do innej funkcji, ktora doda drugi parametr i tak dalej. Taką technikę stosuje autor Reduksa.