Блог компании Microsoft
.NET
F#
Программирование
Комментарии 5
+2

Уточнение:


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

Скобки необязательны потому что "стрелка" правоассоциативна.


запись a -> b -> c -> d эквивалентна записи a -> (b -> (c -> (d)))


а вот ((a -> b) -> c) -> d означало бы СОВСЕМ другое.

0

Жалко, что перечислив трудности, автор оригинальной статьи не упомянул про достоинства такого странного подхода: упрощение вывода типов и редукции лямбда-выражений, бесточечная нотация, упрощение синтаксиса при передаче частично-определённых функций и т.д.

+2

В комментарии это будет куце. Вывод типов Хиндли-Милнера, который является базой в других системах сравнительно просто формулируется для унарной функции, а при каррировании все прочие варианты получаются индукцией. Тоже относится и к редукциям. Бета-редукцию определяем для унарной функции и автоматом получаем все мыслимые арности.
Бесточечная нотация — это возможность определения функций без явного указания аргументов, но это-то как раз широко известно и используется.

Только полноправные пользователи могут оставлять комментарии. , пожалуйста.