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

Concurrent Clean : Heap Full (4)

[id:lethevert:20060218:p1]で見つけたHeap Fullエラーですけど、結局、理由に思い当たりました。 というか、よくよく考えたら、非正格な評価戦略をとっていることからの自然な帰結としてのHeap Fullエラーだったということなのですが・・・ 評価順序を順番…

余談ですよ : 純粋関数型言語は一般に普及するか?

ということを考えたのだが、まぁ、「一般」の意味が良く分からないので、解釈がさまざまに分かれることは必須必至だが、まぁ、余談ネタだということで。 ある程度専門的な集合の中で一般的に普及するかというと、もう既に普及しているんじゃないかと思うので…

Concurrent Clean : Heap Full (5)

[id:lethevert:20060218:p5]で、以下のコードはOKと書いた。 `` :: (!a, !b) -> (!a, !b) `` (a, b) = (a, b) (\(x,y) b = ``(if b (x+1.0) x, y+1.0))しかし、以下のコードはダメだ。 ` :: !a -> !a ` a = a (\(x,y) b = (`$ if b (x+1.0) x, `$ y+1.0))…

Concurrent Clean : 便利関数

ということで、関数適用、タプル、一意型、正格性などに関連する便利関数・演算子をいくつか定義した。これからは、これらを適宜使っていくことにする。 http://www.geocities.jp/lethevert/softwares/clean/customize.html

Concurrent Clean : 文字列のバッファリング (2)

[id:lethevert:20060215:p2]の続き。 正格性に関する注釈を細かく入れることで、Heap Fullエラーを起こさないようになりました。

Concurrent Clean : wc

先の一意型に関する便利関数を利用して、以下のように書けました。すっきり。 Start world #(console,world) = stdio world #(nl,nw,nc) = wc console = toString nl +++ " " +++ toString nw +++ " " +++ toString nc wc :: *File -> (Int, Int, Int) wc f …