Каррирование — это процесс в функциональном программировании, в котором мы можем преобразовать функцию с несколькими аргументами в последовательность вложенных функций. Другими словами, он возвращает новую функцию, которая ожидает следующий аргумент. С f(x, y, z) по f(x)(y)(z).

curry :: ((x, y, ...) -> c) -> x -> y -> ... -> c

Каррирование разбивает функцию по ее арности (арность — это количество аргументов, принимаемых…