関数型プログラミング言語Haskell Part19
レス数が950を超えています。1000を超えると書き込みができなくなります。
0964デフォルトの名無しさん
2012/10/10(水) 20:19:27.49(fst $) の型は (a, b) -> a だ。
これは、(fst $) は (a, b) 型の値に適用して a 型の値を返す、という意味だ。
あなたのプログラムでは、(fst $) を runWriter に適用している。
では、runWriter の型は (a, b) なのか?
違うよね。
runWriter の型は Writer x y -> (y, x) だ。
(fst $) は (a, b) 型の値に適用することが期待されているのに、
実際のプログラムソースでは (Writer x y -> (y, x)) 型の値に適用しようとしている。
マッチしないよ。
というのがエラーの内容だ。
で、あなたがやりたいことが getValue の型の通りだとするなら、
そこは fst $ runWriter ではなく fst . runWriter なのでは?
レス数が950を超えています。1000を超えると書き込みができなくなります。