2007-07-17から1日間の記事一覧

震度分布がおかしくない?

http://typhoon.yahoo.co.jp/weather/jp/earthquake/2007-07-16-23-18.html どうしてこういう分布になるんだろう?

Concurrent Clean : with

withはcaseやガードと組み合わせることで効果を生み出す。 まず、caseとの組み合わせ。 f a # a = add1 a //(1) = case a of 0 = add1 0 //(2) a = add1 a //(3) に対して、次のように書くと、(3)の所だけadd1が有効になる f a # a = add1 a //(1) = case a …

Concurrent Clean : letとwhere,with

次の例は、(2)だけadd1が有効になる。whereをwithに置き換えても同じ。 k a = let a1 = add1 a //(1) a2 = add1 a1 //(2) where add1 = (+) 1 in add1 a2 //(3) これは、(1),(2),(3)のすべてでadd1が有効になる。withをwhereに置き換えても同じ。 k a = let …

Concurrent Clean : whereとwith

withをwhereとは別の文法要素として用意している理由がよくわからない。whereを使えるところは、すべてwithでも同じ意味になる気がするのだけれど。

Concurrent Clean : 識別子 `1, _1

`1という識別子が関数に使えることは、[id:lethevert:20070225:p3]に書いたが、変数には使えないらしいことに気づいた。どうも、これは大文字識別子として認識されているのか? 関連して、_1も変数名には使えないみたい。 http://sky.zero.ad.jp/~zaa54437/p…

Concurrent Clean : for-notation : 隠れ変数へのアクセス

for-notationの際に、forの対象となっている隠れた変数が1つあって、これへの明示的アクセスをしたいときにどう書けばいいかということを考えている。また、変換後のプログラムコードの中で、どういう変数名を当てればよいかということも同時に考えている。…

Concurrent Clean : withとスコープ

次のプログラムは正しい l a # b = a + 1 c = f a with f z = z + b = c with以前のlet-before式で定義された変数にアクセスできている。

Concurrent Clean : for-notation : 脱出パターン

次のようなプログラムを proc f = for f ?1 True,i <- freadi fwritei i return Just i except1 _ _ return Nothing 次のように変換する。 proc f = case f of for = case freadi for of (True,i,for) # for = fwritei i for = (Just i,for) (for`0,for`1,fo…

Concurrent Clean : for-notation

できたところまでチェックイン。 しかし、脱出パターンを作るには、今の構造のままではちょっと難しいな。すこし書き換えが必要になりそう。 - 想像以上にむずいぞ。 これにさらにforのネストを加えるつもりなのだけど・・・