EitherIO Monad met do-notatie

Sign in to test your solution.
data EitherIO e a = EitherIO { runEitherIO :: IO (Either e a) } instance Functor (EitherIO e) where fmap f x = EitherIO $ do either <- runEitherIO x return undefined instance Applicative (EitherIO e) where pure = EitherIO . return . Right f <*> x = EitherIO $ do f' <- runEitherIO f x' <- runEitherIO x return undefined instance Monad (EitherIO e) where return = pure m >>= k = EitherIO $ do m' <- runEitherIO m return undefined
You can submit as many times as you like. Only your latest submission will be taken into account.
Sign in to test your solution.