1

このようなものを書くとうまくいきます:

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)、どうすればよいですか?

4

1 に答える 1