我是Haskell的新手,并试图了解一些事情。如果我执行以下操作,我会遇到问题:
list1 = [1..]
list2 = [x | x <- list1, x <= 4]
print list2
返回[1,2,3,4
。它上面没有末端括号,因此就好像列表正在加载或冻结。以下是它的外观:
Prelude> print list2
[1,2,3,4
这里发生了什么?
答案 0 :(得分:7)
您知道列表单调增加,但Haskell没有。使用list1
代替列表推导,以便在找到大于4的值后,> list1 = [1..]
> list2 = takeWhile (<= 4) list1
> print list2
[1,2,3,4]
可以停止评估。
{{1}}