Ну вот вы питались сделать повторный вызов унарной функции, а каррирование это уже выебоны 2.0)
Если вкратце, то это когда есть функция с n аргументами и в неё можно передать x аргументов (которое есть n > x) и получить в ответ функцию, которая принимает оставшиеся параметры(а часть кода до момента использования оставшихся параметров используется).
Например, есть foo(x, y, z), мы вызываем её как foo(1) и получаем foo2(y, z)