我正在读“初学F#”一书, 有一个简短的示例代码列表,用于演示如下的惰性评估:
lazyValue = lazy ( 2 + 2 )
let actualValue = Lazy.force lazyValue
printfn "%i" actualValue
这似乎很容易,但是对我来说有一个错误,比如没有定义函数力???
我对此感到困惑。从msdn搜索,似乎没有答案。
任何人都可以告诉我发生了什么事?
答案 0 :(得分:8)
出于某种原因,Lazy.force现在在F#PowerPack中。
由于此功能没有依赖性,我建议您从F# PowerPack复制它以方便使用:
module Lazy =
let force (x: Lazy<'T>) = x.Force()
答案 1 :(得分:4)
作者写了Lazy.force
因为作者之前可能使用过OCaml。随着时间的推移,F#从OCaml样式API转向C#样式API。现在人们写x.Value
或x.Force()
。代替。
答案 2 :(得分:2)
你的代码应该是
let lazyValue = lazy ( 2 + 2 )
let actualValue = lazyValue.Force()
printfn "%i" actualValue