module Control.Monad.Syntax.Two where (==<<) :: Monad m => (a -> b -> m c) -> m a -> b -> m c ==<< :: forall (m :: * -> *) a b c. Monad m => (a -> b -> m c) -> m a -> b -> m c (==<<) a -> b -> m c mf m a x b b = m a x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= (a -> b -> m c `mf` b b) infixl 1 ==<< (=.<<) :: Monad m => (a -> b -> m c) -> m b -> a -> m c =.<< :: forall (m :: * -> *) a b c. Monad m => (a -> b -> m c) -> m b -> a -> m c (=.<<) a -> b -> m c mf m b x a a = a -> b -> m c mf a a forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<< m b x infixl 1 =.<<