私は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の怠惰により、最初の2つの三角形が見つかり、停止するのではないかと思いました。