【发布时间】:2023-04-05 19:36:01
【问题描述】:
我知道如果我要在 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 list-comprehension lazy-evaluation