2007-05-06から1日間の記事一覧

Concurrent Clean : 型エラーに悩む

もう自分の書いている型が正しいのかどうか全く自信がない。 Cleanは、対話環境がない上に、一意型の関係を正しく指定しないといけないので、複雑な関数の型を正しく書くのは至難だ。 まあ、例えば、こんな型エラーになるのですよ。 Compiling Controller Ty…

Concurrent Clean : 誤報 value restrictionというやつか

次のプログラムが型エラーになった。これは、value restrictionというやつではないか? Start = f id 1 "a" id a = a f :: (a -> a) Int String -> (Int, String) f g i s = (g i, g s) Haskellにはvalue restrictionはないと聞いていたので、Cleanもそうな…

Concurrent Clean : シノニム型と全称量化変数

うーむ。微妙だ。 ::Id :== A.a: a -> a f :: Id Int String -> (Int, String) f g i s = (g i, g s) は型エラー。どうも、'A.a:'が認識されていないような雰囲気。 ::Id a :== a -> a f :: (A.a: Id a) Int String -> (Int, String) f g i s = (g i, g s) …

Concurrent Clean : やっと動いた。

全称量化変数の使い方が、やっと飲み込めてきた。でも、まだ怪しいところがあるけれど。 とりあえず、mappingを mapTest :: (A.i: *MCGI i) (A.i: MModel i) MView -> *MRes mapTest cgi model view = cgi model mTest1 \m1 = model mTest2 \m2 = view [vTes…