【发布时间】:2013-12-01 02:14:18
【问题描述】:
我很困惑为什么 GHCI 会无限地计算这个列表:
takeWhile (>0) [x^2 | x <- [100, 99..], odd x]
但是,此列表停止并按预期计算:
takeWhile (>0) [x | x <- [100, 99..], odd x]
我在这里缺少什么?为什么对输入进行平方会导致 takeWhile(>0) 无效?
此外,此列表按预期结束...为什么此列表会终止,而另一个则不会?
takeWhile (<1000) [x^2 | x <- [1..], odd x]
另外,如果我从第一个列表中删除奇数 x 过滤器,它会正确终止:
takeWhile (>0) [x^2 | x <- [100, 99..]]
这到底是怎么回事?
【问题讨论】:
标签: haskell filter list-comprehension ghci