Concurrent Clean : ここです
Start :: [Int] Start = takeWhile ((>) 1000) [x^3 \\ x <- [1..]]しかし、以下のように書かないよう気を付けて欲しい。
Start :: [Int] Start = [x^3 \\ x <- [1..] | x^3 < 1000]これは以下のものと同等である。
Start :: [Int] Start = filter ((>) 1000) [x^3 \\ x <- [1..]]関数takeWhileは、その述語が一回失敗するとすぐに空リストを出力する一方で、関数filterは各要素を検査する。無限リストに対しては、テストすべき無限に多い要素が存在する。従って、このプログラムは終了しない。