我正在阅读“Beginning F#”一书,有一个简短的示例代码列表,用于演示惰性评估,如下所示:
lazyValue = lazy ( 2 + 2 )
let actualValue = Lazy.force lazyValue
printfn "%i" actualValue
看起来很简单,但对我来说有一个错误,说函数力没有定义???
我对此感到困惑。从msdn搜索,似乎没有答案。
谁能告诉我发生了什么??
我正在阅读“Beginning F#”一书,有一个简短的示例代码列表,用于演示惰性评估,如下所示:
lazyValue = lazy ( 2 + 2 )
let actualValue = Lazy.force lazyValue
printfn "%i" actualValue
看起来很简单,但对我来说有一个错误,说函数力没有定义???
我对此感到困惑。从msdn搜索,似乎没有答案。
谁能告诉我发生了什么??
出于某种原因,Lazy.force现在在 F# PowerPack 中。
由于这个函数没有依赖,建议你从F# PowerPack中拷贝过来,方便使用:
module Lazy =
let force (x: Lazy<'T>) = x.Force()
作者写Lazy.force
是因为作者之前可能用过OCaml。随着时间的推移,F# 从 OCaml 风格的 API 转向 C# 风格的 API。现在人们写x.Value
或x.Force()
。反而。
你的代码应该是
let lazyValue = lazy ( 2 + 2 )
let actualValue = lazyValue.Force()
printfn "%i" actualValue