F #: Почему я не могу использовать необязательные параметры в свободных функциях? - PullRequest
16 голосов
/ 03 июня 2009

Почему я не могу использовать необязательные параметры в свободных функциях, определенных с помощью «let»?

Почему они разрешены только в функциях-членах?

Ответы [ 2 ]

20 голосов
/ 03 июня 2009

Я подозреваю, что они предоставляются только для совместимости с функциями .NET. Это не то, с чем вы сталкиваетесь на функциональных языках. Проблема с необязательным параметром в том, что вы не можете его карри. Если второй параметр функции f является необязательным, то что такое

пусть g = f x

Это функция, принимающая один аргумент, или значение, полученное путем вычисления f по x плюс второй параметр по умолчанию?

2 голосов
/ 11 июля 2015

Разрешено в OCaml. Поэтому должно быть возможно реализовать это в F #.

http://caml.inria.fr/pub/docs/manual-ocaml/lablexamples.html#sec43

Я полагаю, это было опущено для простоты в F #.

...