Comments 5
Уточнение:
Скобки необязательны. Но их можно представить в уме, чтобы упростить восприятие сигнатур функций.
Скобки необязательны потому что "стрелка" правоассоциативна.
запись a -> b -> c -> d
эквивалентна записи a -> (b -> (c -> (d)))
а вот ((a -> b) -> c) -> d
означало бы СОВСЕМ другое.
Жалко, что перечислив трудности, автор оригинальной статьи не упомянул про достоинства такого странного подхода: упрощение вывода типов и редукции лямбда-выражений, бесточечная нотация, упрощение синтаксиса при передаче частично-определённых функций и т.д.
В комментарии это будет куце. Вывод типов Хиндли-Милнера, который является базой в других системах сравнительно просто формулируется для унарной функции, а при каррировании все прочие варианты получаются индукцией. Тоже относится и к редукциям. Бета-редукцию определяем для унарной функции и автоматом получаем все мыслимые арности.
Бесточечная нотация — это возможность определения функций без явного указания аргументов, но это-то как раз широко известно и используется.
Функциональное мышление. Часть 4