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は各要素を検査する。無限リストに対しては、テストすべき無限に多い要素が存在する。従って、このプログラムは終了しない。