F#:为什么我不能在松散的函数中使用可选参数?

时间:2009-06-03 17:49:34

标签: f# optional-parameters

为什么我不能在用“let”定义的松散函数中使用可选参数?

为什么它们只允许在成员函数中使用?

2 个答案:

答案 0 :(得分:20)

我怀疑它们仅用于兼容.NET功能。它们不是您在函数式语言中遇到的东西。可选参数的问题是您不能理解它。如果函数f的第二个参数是可选的,那么

让g = f x

是一个函数接受一个参数,还是通过评估x上的f加上默认的第二个参数获得的值?

答案 1 :(得分:2)

在OCaml中允许。因此应该可以在F#中实现它。

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

我想在F#中为了简单起见省略了它。