来自https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/keyword-reference的文档:
看起来'and'可以用在上面的四个类别中。通过记录和约束,我看到了用例。但是任何人都可以说明 let 绑定和成员的用途吗?
我在这个要点中看到了一个例子:https : //gist.github.com/theburningmonk/3199252,但我不确定它是如何工作的。
对于 let 绑定和成员,and关键字用于定义相互递归的类型和函数。一个带有函数的愚蠢示例:
let rec f x = g x + 1
and g x = f x - 1
Run Code Online (Sandbox Code Playgroud)
一个带有类的愚蠢示例:
type A() =
member x.B = B()
and B() =
member x.A = A()
Run Code Online (Sandbox Code Playgroud)
类的情况确实涵盖了所有可能的类型定义,包括记录和可区分联合:
type A =
| Aaa of int
| Aaaa of C
and C =
{ Bbb : B }
and B() =
member x.Bbb = Aaa 10
Run Code Online (Sandbox Code Playgroud)