关于懒惰的定义的问题

Dan*_*iel 5 f#

在prim-types.fs(v1.9.7.8)的第5633行,有以下类型缩写:

type 'T ``lazy`` = Lazy<'T>
Run Code Online (Sandbox Code Playgroud)

我有几个问题.

  1. 双反推是什么意思?
  2. 这个定义是否等同于type lazy<'T> = Lazy<'T>?(如果没有,它有什么不同?)

Jar*_*Par 8

双后退标记是允许将F#关键字用作标识符的一种方式.另一个例子是

let ``let`` = 42
Run Code Online (Sandbox Code Playgroud)


kvb*_*kvb 5

要回答你的问题的后半部分,泛型类型在F#就可以利用O'Caml式语法,其中泛型参数之前的类型(例如指定'a list,int array等等),或者用尖括号.NET样式(例如list<'a>,array<int>等等),所以这两个定义确实基本相同(除了您编写的版本在语法上无效,因为它lazy是一个关键字).对于多参数泛型类型,不推荐使用O'Caml样式并生成警告(例如,let (m:(int,string) Map) = Map.empty应该重写为let (m:Map<int,string>) = Map.empty).