F# 懒惰评估介绍

示例

包括F#在内的大多数编程语言都会根据称为“严格评估”的模型立即评估计算。但是,在惰性评估中,只有在需要计算时才对计算进行评估。F#允许我们通过lazy关键字和来使用惰性评估sequences。

// 定义惰性计算

let comp = lazy(10 + 20)

// 我们需要强制结果

let ans = comp.Force()

此外,在使用“惰性评估”时,将缓存计算结果,因此,如果我们在强制执行第一个实例之后强制执行结果,则表达式本身将不会再次被评估

let rec factorial n = 

  if n = 0 then 

    1

  else 

    (factorial (n - 1)) * n

let computation = lazy(printfn "Hello World\n"; factorial 10)

// 你好世界将被打印

let ans = computation.Force()// Hello World将不会在此处打印

let ansAgain = computation.Force()

           

以上是 F# 懒惰评估介绍 的全部内容, 来源链接: utcz.com/z/321392.html

回到顶部