Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F#:具有惰性评估的奇怪性_F#_Lazy Evaluation_F# Interactive - Fatal编程技术网

F#:具有惰性评估的奇怪性

F#:具有惰性评估的奇怪性,f#,lazy-evaluation,f#-interactive,F#,Lazy Evaluation,F# Interactive,给定以下代码: let bar = lazy( printfn "bar" ()) let foo = lazy( printfn "foo" bar) 在交互窗口中(每次重置) 当我调用let res=foo.Force()时,我得到: foo val res : Lazy<unit> = Value is not created. 在这两种情况下,我都希望它只打印“foo”,而

给定以下代码:

let bar =
    lazy(
        printfn "bar"        
        ())

let foo = 
    lazy(
        printfn "foo"
        bar)
在交互窗口中(每次重置)

当我调用
let res=foo.Force()
时,我得到:

foo
val res : Lazy<unit> = Value is not created.

在这两种情况下,我都希望它只打印“foo”,而第二种情况下打印“foo\nbar”。这是怎么回事?

你有什么版本的F#?这听起来可能像是一个被修复的bug;当FSI打印Lazy类型的值时,您有什么版本的F#?这听起来可能像是一个被修复的bug;当FSI打印Lazy类型的值时,问题似乎是实现细节。惰性引用如何知道何时计算了值?也许当它的引用不是()

拥有一个类型
Lazy
没有多大意义。试一试

let bar =
    lazy(
        printfn "bar"        
        42)

问题似乎在于实现细节。惰性引用如何知道何时计算了值?也许当它的引用不是()

拥有一个类型
Lazy
没有多大意义。试一试

let bar =
    lazy(
        printfn "bar"        
        42)

可能是这样,我认为我的VS2010 beta2已经很老了:10.0.21003.1。还有其他人对这个问题进行重新解释吗?如果没有,我就假设这是以前版本的一个已知问题是的,我手头没有Beta2,但我的内部构建具有预期的行为,因此这似乎是一个已经修复的bug,不确定修复是否已经发布。我在Beta2中也有上述行为。我还应该添加“foo.Force()|>ignore”将打印“foo”和返回类型unitIt可能是,我认为我的VS2010 beta2非常旧:10.0.21003.1。还有其他人对这个问题进行重新解释吗?如果没有,我就假设这是以前版本的一个已知问题是的,我手头没有Beta2,但我的内部构建具有预期的行为,因此这似乎是一个已经修复的bug,不确定修复是否已经发布。我在Beta2中也有上述行为。我还应该添加“foo.Force()|>ignore“将打印“foo”并返回类型单位