【发布时间】:2015-07-27 10:17:50
【问题描述】:
代数数据类型在 F# 中使用 Sum(判别联合)和乘积(元组)类型表示。然后我可以像在代数中一样组合这些元素。
我也可以像这样定义两个类类型的元组:
type MINT (i:int) =
member x.i = i
type MINTtuple = MINT * MINT
let v :MINTtuple= MINT(42), MINT(43)
(fst v).i |> printfn "%d" |> ignore
但我似乎无法定义一个包含此类类型的 DU,或者在查看了一些 documentation 后我能想到的任何其他语法:
type MINTDU =
|Positive of MINT
|Negative of MINT
let w = Positive MINT(45)
我的问题:如果不可能,根本原因是什么?我对 F# 的特性非常满意。我只想更好地理解函数类型和类类型之间的张力。谢谢。
【问题讨论】:
标签: f#