関数型プログラミング言語Haskell Part26
■ このスレッドは過去ログ倉庫に格納されています
0295デフォルトの名無しさん
2014/10/26(日) 21:46:53.03ID:u4tbdCa8下記のプログラムで class Cook に型依存性(と言うのかな?) a -> b を指定する必要性が分かりません。
------------------------------
data Nasu = Nasu Int
class Cook a b where
cook :: a -> b
instance Cook Nasu Nasu where
cook (Nasu n) = Nasu (n+1)
main :: IO ()
main = do
let a = Nasu 1
let b = cook (cook a) :: Nasu
return ()
------------------------------
cook (cook a) :: Nasu を cook ((cook a) :: Nasu) :: Nasu に変えればオプション不要でコンパイルが通ります。
ですが、このプログラムなら (cook x) :: Nasu の x は Nasu 以外にありえないので、
現状のままでも cook (cook a) :: Nasu の内側の cook a は Nasu だと推論されても良さそうなんですが・・・
デフォルトでは、cook ::a -> b の a から b も、逆に b から a も推論しないのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています