我正在跟踪一个单台变压器教程。
,它要求我尝试为EitherIO数据类型实现Monad实例,定义为:
data EitherIO e a = EitherIO {
runEitherIO :: IO (Either e a)
}
所以我试着:
instance Functor (EitherIO e) where
fmap f = EitherIO . fmap (fmap f) . runEitherIO
instance Monad (EitherIO e) where
return = EitherIO . return . Right
x >>= f