EitherIO Monad met do-notatie

Log in om je oplossingen te testen.
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
Je kunt zo vaak indienen als je wenst. Er wordt enkel rekening gehouden met je laatst ingediende oplossing.
Log in om je oplossingen te testen.