2

我正在阅读“Beginning F#”一书,有一个简短的示例代码列表,用于演示惰性评估,如下所示:

lazyValue = lazy ( 2 + 2 )
let actualValue = Lazy.force lazyValue
printfn "%i" actualValue

看起来很简单,但对我来说有一个错误,说函数力没有定义???

我对此感到困惑。从msdn搜索,似乎没有答案。

谁能告诉我发生了什么??

4

3 回答 3

8

出于某种原因,Lazy.force现在在 F# PowerPack 中。

由于这个函数没有依赖,建议你从F# PowerPack中拷贝过来,方便使用:

module Lazy =
    let force (x: Lazy<'T>) = x.Force()
于 2012-06-07T07:47:16.800 回答
4

作者写Lazy.force是因为作者之前可能用过OCaml。随着时间的推移,F# 从 OCaml 风格的 API 转向 C# 风格的 API。现在人们写x.Valuex.Force()。反而。

于 2012-06-07T14:56:41.183 回答
2

你的代码应该是

    let lazyValue = lazy ( 2 + 2 )
    let actualValue = lazyValue.Force()
    printfn "%i" actualValue
于 2012-06-07T06:55:55.217 回答