このようなものを書くとうまくいきます:
data Either a b = Left a | Right b
instance Functor (Either a) where
fmap _ (Left x) = Left x
fmap f (Right x) = Right (f x)
ここで、これを反転させたいとしましょう。Left は f を値に適用します。
instance Functor (Either a) where
fmap _ (Right x) = Right x
fmap f (Left x) = Left (f x)
これはコンパイルできません。次のようなものが必要だと思いますがFunctor (Either _ b)
、どうすればよいですか?