Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- (<*>) :: EitherIO e (a -> b) -> EitherIO e a -> EitherIO e b
- f <*> x = EitherIO w
- where w = (liftA2 (<*>) (runEitherIO f) (runEitherIO x))
- -- f :: EitherIO e (a -> b)
- -- runEitherIO :: EitherIO e a -> IO (Either e a)
- -- runEitherIO f :: IO (Either e (a -> b))
- -- x :: EitherIO e a
- -- runEitherIO x :: IO (Either e x)
- -- liftA2 :: (a -> b -> c) -> EitherIO e a -> EitherIO e b -> EitherIO e c ?????
- -- EitherIO :: IO (Either e c) -> EitherIO e c
- -- w :: IO (Either e c)
- instance Monad (EitherIO e) where
- return = pure
- x >>= f = EitherIO $ runEitherIO x >>= either (return . Left) (runEitherIO . f)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement