在prim-types.fs(v1.9.7.8)的第5633行,有以下类型缩写:
type 'T ``lazy`` = Lazy<'T>
我有几个问题。
type lazy<'T> = Lazy<'T>
? (如果没有,它有什么不同?)答案 0 :(得分:8)
双后退标记是一种允许将F#关键字用作标识符的方法。另一个例子是
let ``let`` = 42
答案 1 :(得分:5)
要回答问题的后半部分,可以使用O'Caml样式语法指定F#中的泛型类型,其中泛型参数位于类型之前(例如'a list
,int array
等。),或带有尖括号的.NET风格(例如list<'a>
,array<int>
等),因此这两个定义确实基本相同(除了您编写的版本在语法上无效,因为{ {1}}是关键字)。对于多参数泛型类型,不推荐使用O'Caml样式并生成警告(例如,lazy
应重写为let (m:(int,string) Map) = Map.empty
)。