В функциональном программировании есть много интересных концепций и техник. Я был поражен каждым из них, когда начал его изучать.

Когда я научился карри, это показалось мне крутым, но поначалу я не видел смысла в его использовании. Я подумал: «Хорошо, это круто, но как это решит мою жизнь?».

Обычно мы видим очень бессмысленные примеры, вроде функции для приветствия кого-то:

Мне нужны были примеры из реального мира. И, как я уже говорил в предыдущих сообщениях, я пришел из среды Java, где все объектно-ориентировано. Может быть, это и ваш случай. И сравнение, которое я сделал, поразило меня, так это то, что мы можем использовать каррирование как конструктор классов с параметрами в объектно-ориентированном стиле.

Здесь у нас есть объектно-ориентированный код, DAO:

Обратите внимание, что я должен создать экземпляр объекта, отправив параметр (соединение), который будет использоваться во всех других методах. Я устанавливаю этот параметр один раз, когда «конструирую» класс, и тогда любой другой метод получает к нему доступ.

Вот тот же пример с использованием каррирования:

Дело не в том, чтобы выбрать лучший вариант. Все дело в предпочтениях. Я привык говорить, что в Javascript есть две большие группы людей. Тех, кто любит объектно-ориентированную парадигму, и тех, кто любит функциональное программирование. И всегда хорошо понимать лучшее из обоих миров.

Полное просветление пришло после просмотра этого видео от Fun Fun Function :)