Почему я не могу использовать необязательные параметры в свободных функциях, определенных с помощью «let»?
Почему они разрешены только в функциях-членах?
Почему я не могу использовать необязательные параметры в свободных функциях, определенных с помощью «let»?
Почему они разрешены только в функциях-членах?
Я подозреваю, что они предоставляются только для совместимости с функциями .NET. Это не то, с чем вы сталкиваетесь в функциональных языках. Проблема с необязательным параметром заключается в том, что вы не можете его каррировать. Если второй параметр функции f является необязательным, что
пусть g = f x
?
Это функция, принимающая один аргумент, или значение, полученное путем вычисления f по x плюс второй параметр по умолчанию?
Это разрешено в OCaml. Поэтому должна быть возможность реализовать его на F#.
http://caml.inria.fr/pub/docs/manual-ocaml/lablexamples.html#sec43
Я предполагаю, что это было опущено для простоты в F#.