2006-02-18から1日間の記事一覧

Concurrent Clean : Heap Full (1)

[id:lethevert:20060217:p1]や[id:lethevert:20060215:p2]で困っているHeap Fullですが、以下のコードで再現することを確認しました。 import StdEnv Start = [0..]!!100000環境は、以下。 OS : Windows 2000 Professional Clean : 2.1.1 (英語版と日本語化…

Concurrent Clean : Heap Full (2)

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

Concurrent Clean : Heap Full (3)

Heap Fullについて、MLに質問してみました。 それはそうと、以下のように頭部尾部正格リストを使って書いてみたところ、 reduce :: !(b a -> b) !b [!(.u -> (a, .u))!] !.u -> (!b, !.u) reduce _ b [!!] u = (b, u) reduce f b [!x:xs!] u # (a, u) = x u …

SICP : 3.1.2 : Concurrent Clean : モンテカルロ法 : 一意型の扱いについて (2)

[id:lethevert:20060217:p1]では、リストを使っていろいろやってみたのだが、Heap Fullの件が解決できないので、別のアプローチを考えてみた。こちらは、正常に終了する。 Start = estimate_pi 1000000 cesaro_test r # (r1, r) = nextRand r # (r2, r) = ne…

Concurrent Clean : Heap Full (4)

結局、無名関数に名前をつけて、正格性の注釈を入れてやることで、正常に終了するようになりました。 reduce :: (b a -> b) !b [(.u -> (a, .u))] !.u -> (!b, !.u) reduce _ b [] u = (b, u) reduce f b [x:xs] u # (a, u) = x u = reduce f (f b a) xs u c…