受这个问题的启发:
F#中是否可能进行显式类型递归?
type 'a Mu = In of 'a Mu 'a
let unIn (In x) = x
这段代码不幸地给出了“类型参数不能用作类型构造函数”的错误。
备注:例如,该结构在论文Functional Programming with Overloading and Higher-Order Polymorphism中使用。
使用示例(摘自此处):
type ('a, 'b) ListX =
| Nil
| Cons of 'a * 'b
type 'a List = ListX Mu
*
类型的事物,实际上高阶类型的类最初被称为“构造器类”,尽管现在这种区别大多被忽略了。 - GS - Apologise to Monica