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もそうなのかと思っていたのだけれど・・・
-
-
- -
-
違いました。
f :: (A.a: a -> a) Int String -> (Int, String) f g i s = (g i, g s)
と書かなければいけなかったのでした。
Cleanの場合、関数宣言の型とそれ以外の型の書き方は、微妙に違うので混乱します。