F#: почему я не могу использовать необязательные параметры в свободных функциях?

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

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


person Jonathan Allen    schedule 03.06.2009    source источник


Ответы (2)


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

пусть g = f x
?

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

person Drew Hoskins    schedule 03.06.2009

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

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

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

person Community    schedule 11.07.2015