Microsoft corporate blog
.NET
F#
Programming
Comments 5
+2

Уточнение:


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

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


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


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

0

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

+2

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

Only those users with full accounts are able to leave comments. , please.