Warning! It seems that you are using Dodona within another webpage, so not everything may work properly. Let your teacher know so that he can solve the problem by adjusting a setting in the learning environment. In the meantime, you can click this link to open Dodona in a new window.
Warning! The page was not fully loaded, probably because of a network issue. It could be that not all functionalities work as expected. Please try reloading the page.
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