为什么这个 Discriminated Union 不接受 Set 类型的案例?

Why doesn't this Discriminated Union accept a Set type case?

我正在尝试创建一个新的 Set 类型:

type MySet<'t> = | List of list<'t>
                 | Sequence of seq<'t>
                 | Array of 't []

这有效,但如果我尝试为 Set 类型本身添加一个案例,我会收到一条消息:a type parameter is missing a constraint 'when t: comparison'

type MySet<'t> = | List of list<'t>
                 | Sequence of seq<'t>
                 | Array of 't []
                 | Set of Set<'T>

我猜这应该很容易修复,但我尝试了一些方法还是无法修复。

Set<'t>数据结构的实现要求它的值可以比较,所以如果你的类型包含可以放入集合中的值,你必须提供相同的类型约束:

type MySet<'t when 't : comparison> =
    | List of list<'t>
    | Sequence of seq<'t>
    | Array of 't []
    | Set of Set<'t>