Haskell列表已冻结

时间:2017-02-23 13:42:11

标签: haskell

我是Haskell的新手,并试图了解一些事情。如果我执行以下操作,我会遇到问题:

list1 = [1..]
list2 = [x | x <- list1, x <= 4]
print list2

返回[1,2,3,4。它上面没有末端括号,因此就好像列表正在加载或冻结。以下是它的外观:

Prelude> print list2
[1,2,3,4

这里发生了什么?

1 个答案:

答案 0 :(得分:7)

知道列表单调增加,但Haskell没有。使用list1代替列表推导,以便在找到大于4的值后,> list1 = [1..] > list2 = takeWhile (<= 4) list1 > print list2 [1,2,3,4] 可以停止评估。

{{1}}