fmapとEitherに関して
すごいH本のp234で
ghci> fmap (replicate 3) (Right "blah")
Right ["blah","blah","blah"]
ghic>fmap (replicate 3) (Left "foo")
Left "foo"
とあって、なぜRightとLeftの結果が違うのか疑問だったが、
instance Functor (Either a) where
fmap _ (Left x) = Left x
fmap f (Right y) = Right (f y)
で納得した。