F# 中的选择类型实现

Choice type implementation in F#

我是 F# 的新手,在选择类型实现方面遇到了一些问题。 我有三种。

type A = p of string
type B = {q:string;r:int}
type C = s of string

那我有这样的选择类型

type D = A | B | C

现在我在创建 D 类型的变量时遇到了问题。我正在尝试做这样的事情,

let v = {q="abc";r=12}
let vofD = D.B v

但它给出了这个错误,

This value is not a function and cannot be applied

我已经尝试搜索有关这件事的文档,但似乎找不到任何好的文档或解决方案。任何帮助将不胜感激。

问题是 F# 编译器不理解 D.B 指的是类型 B。如果您这样定义受歧视的联合:

type D =
   | FromA of A
   | FromB of B
   | FromC of C

那你可以写let vofD = D.FromB v.