gpt4 book ai didi

haskell - 当参数出现多次时,Haskell 中惰性求值的性能

转载 作者:行者123 更新时间:2023-12-04 05:14:31 25 4
gpt4 key购买 nike

假设我有一个函数可以计算由定义的数字的四的幂

let power4 x = x*x*x*x

我尝试通过 x = (3 + 8)*2
let result = power4 ((3 + 8)*2) 

由于在 Haskell 中,值会被评估直到需要它们,这是否意味着 x 将评估四次?如果是这样,有什么方法可以改进 Haskell 编译器?

谢谢。

最佳答案

不,它只会被评估一次。在按名称调用中,它将被评估四次,但所有 Haskell 实现都是按需调用(尽管标准不要求这样做),这意味着每个表达式最多会被评估一次。

这仅适用于表达式完全具体的情况。例如。无法保证:

foo x = x + (1+2)

bar = foo 3 + foo 4

计算时 bar , (1+2)只会被评估一次。事实上,它可能会被评估两次(如果编译时没有优化)。

关于haskell - 当参数出现多次时,Haskell 中惰性求值的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7721437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com