与大多数编程语言一样,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()