我可以通过各种方式声明一种在泛型类型上运行的类型吗?
我看到了以下语法:
// There's a generic type called Aggregate that will be operated on by the Id type
type 'Aggregate Id = Created of 'Aggregate
上面的语法是另一种做出以下声明的方法吗?
// The Id type operates on a generic type called 'Aggregate
type Id<'Aggregate> = Created of 'Aggregate
我尝试引用以下documentation。但是,我没有看到替代技术的例子。
答案 0 :(得分:6)
据我所知,第一个是来自OCaml / ML的旧语法。
就单参数泛型而言,两者都是相同的。多参数泛型,如
type 'a 'b Id = ...
不行。你必须要做
type ('a, 'b) Id = ...
我发现语法非常不幸,因为所有.NET - 接口代码和文档将始终使用C#语法
type Id<'a, 'b> = ...
VSCode / Ionide(以防您使用它们)也使用C#表示法。我个人也转而使用C#表示法来处理单个params泛型以及简单地在任何地方使用相同的符号