gpt4 book ai didi

Haskell 惰性求值和重用

转载 作者:行者123 更新时间:2023-12-04 01:22:33 24 4
gpt4 key购买 nike

我知道如果我要在 Haskell 中计算一个正方形列表,我可以这样做:

squares = [ x ** 2 | x <- [1 ..] ]

然后当我这样称呼正方形时:
print $ take 4 squares

它会打印出 [1.0, 4.0, 9.0, 16.0]。这被评估为 [ 1 ** 2, 2 ** 2, 3 ** 2, 4 ** 2 ]。现在,由于 Haskell 是功能性的并且每次结果都是相同的,如果我要在其他地方再次调用 squares,它会重新评估它已经计算出的答案吗?如果我在调用上一行之后重新使用正方形,它会重新计算前 4 个值吗?
print $ take 5 squares

它会评估 [1.0, 4.0, 9.0, 16.0, 5 ** 2] 吗?

最佳答案

在这种情况下,它不会被重新计算,因为列表实际上是被构建的,并且正方形列表在调用之后继续存在。然而,Haskell 函数一般不会被内存。这仅适用于您没有显式调用函数,只是探索(in)有限列表的情况。

关于Haskell 惰性求值和重用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4532443/

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