Concurrent Clean : Heap Full (2)

どうやら、リストが遅延リストであることが影響しているようです。
リストの正格性については、http://sky.zero.ad.jp/~zaa54437/programming/clean/LanguageReport21/Chap4.html#sc4を参照してください。

[a] : 遅延リスト
[!a] : 頭部正格リスト
[#a] : 頭部正格非ボックス化リスト
[a!] : 尾部(スパイン)正格リスト

ということになります。頭部と尾部(スパイン)とは、[a:as]とあったとき、aが頭部でasが尾部(スパイン)です。
で、これらは全て別の型のリストということになるので、明示的に指定してやらなければいけません。なにも考えずに[a]を使うと、遅延リストになります。
さらに、多重定義リストというものもあるらしいが、これの動きはまだ把握できていません。

[|a] : 多重定義リスト

ところで、遅延リスト以外は、StdEnvモジュールをimportしただけでは使えません。StdStrictListもimportする必要があります。また、(!!)を始めとしたの基本的なリスト操作関数は、遅延リストに対してだけ定義されているようで、その他のリストに対して使用できません。ですから、対応する操作関数は、自前で実装してやる必要があります。← うそです。StdOverloadedListというモジュールがあり、そこにいろいろ定義されています。(でも、遅延リストに対する関数とそれ以外を区別する必要が分からないなぁ)
ということで、以下のように、頭部正格リストを使ったところ、Heap Fullを起こさずに実行完了しました。

import StdEnv, StdOverloadedList
Start = [!0..]!!|100000000