Advertisement
Guest User

Untitled

a guest
Nov 26th, 2015
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.   -- (<*>) :: EitherIO e (a -> b) -> EitherIO e a -> EitherIO e b
  3.   f <*> x = EitherIO w
  4.     where w = (liftA2 (<*>) (runEitherIO f) (runEitherIO x))
  5.   -- f :: EitherIO e (a -> b)
  6.   -- runEitherIO :: EitherIO e a -> IO (Either e a)
  7.   -- runEitherIO f :: IO (Either e (a -> b))
  8.  
  9.   -- x :: EitherIO e a
  10.   -- runEitherIO x :: IO (Either e x)
  11.  
  12.   -- liftA2 :: (a -> b -> c) -> EitherIO e a -> EitherIO e b -> EitherIO e c ?????
  13.   -- EitherIO :: IO (Either e c) -> EitherIO e c
  14.   -- w :: IO (Either e c)
  15.  
  16.  
  17.  
  18.  
  19. instance Monad (EitherIO e) where
  20.   return  = pure
  21.   x >>= f = EitherIO $ runEitherIO x >>= either (return . Left) (runEitherIO . f)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement