F#中的惰性评估简介

示例

与大多数编程语言一样,F#默认情况下使用严格评估。在严格评估中,将立即执行计算。相反,“惰性评估”将计算的执行推迟到需要计算结果时为止。此外,在“延迟评估”下的计算结果将被缓存,从而避免了对表达式进行重新评估的需要。

我们可以在F#中通过lazy关键字和使用懒惰求值Sequences

// 23 * 23在这里不评估
// lazy关键字创建延迟计算的延迟计算 
let x = lazy(23 * 23)

// 我们需要强制结果
let y = x.Force()// Hello World未在此处打印
let z = lazy(printfn "Hello World\n"; 23424)

// 你好世界打印和23424返回
let ans1 = z.Force()// Hello World未在此处打印 as z as already been evaluated, but 23424 is
// 回
let ans2 = z.Force()