我正在学习http://learnyouahaskell.com/starting-out上的(优秀的)Haskell 教程,并尝试了直角三角形示例:
> let triangles = [(a,b,c) | c <- [1..10], b <- [1..10], a <- [1..10], a^2 + b^2 == c^2]
运行这个我得到了,正如预期的那样:
> triangles
[(4,3,5),(3,4,5),(8,6,10),(6,8,10)]
现在,我想尝试使用无限列表:
> let triangles = [(a,b,c) | c <- [1..], b <- [1..], a <- [1..], a^2 + b^2 == c^2]
但是当我尝试它时,例如:
> take 2 triangles
...程序只是运行并没有输出。我究竟做错了什么?我认为 Haskells 的懒惰会导致它找到前两个三角形然后停止?