- 4 名前:デフォルトの名無しさん mailto:sage [2013/01/21(月) 02:24:30.26 ]
- Haskell初心者ですが、RealWorldHaskell読んでいて、状態モナドもどきを自作してみようと思って
newtype 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 の一行を消しても型推論で通りますが、それは気持ち悪いのです)。
|

|