関数型プログラミング言語Haskell Part21
■ このスレッドは過去ログ倉庫に格納されています
0004デフォルトの名無しさん
2013/01/21(月) 02:24:30.26newtype State s a = StateMonad { stateFunc :: s -> (a,s) }
とやってみて
somefunc :: (a -> b) -> State s a -> State s b
somefunc f (StateMonad g) = StateMonad( \s-> (f(fst(g s)), snd(g s)))
は通るのに
instance Functor (State s) where
fmap :: (a -> b) -> State s a -> State s b
fmap f (StateMonad g) = StateMonad( \s-> (f(fst(g s)), snd(g s)))
が通らないのがわからなくて困っています。
★質問: fmap をどのように宣言するのが正解なのでしょうか?
(fmap :: (a -> b) -> State s a -> State s b の一行を消しても型推論で通りますが、それは気持ち悪いのです)。
■ このスレッドは過去ログ倉庫に格納されています