module Control.Monad.Syntax ( module X , (>>==) , (>>===) , (>>====) , (>>=====) , (>>======) ) where import Control.Monad.Syntax.Two as X import Control.Monad.Syntax.Three as X import Control.Monad.Syntax.Four as X import Control.Monad.Syntax.Five as X import Control.Monad.Syntax.Six as X (>>==) :: Monad m => m b -> (a -> b -> m c) -> a -> m c (>>==) mb f a = f a =<< mb infixr 2 >>== (>>===) :: Monad m => m c -> (a -> b -> c -> m d) -> a -> b -> m d (>>===) mc f a b = f a b =<< mc infixr 2 >>=== (>>====) :: Monad m => m d -> (a -> b -> c -> d -> m e) -> a -> b -> c -> m e (>>====) md f a b c = f a b c =<< md infixr 2 >>==== (>>=====) :: Monad m => m e -> (a -> b -> c -> d -> e -> m f) -> a -> b -> c -> d -> m f (>>=====) me f a b c d = f a b c d =<< me infixr 2 >>===== (>>======) :: Monad m => m f -> (a -> b -> c -> d -> e -> f -> m g) -> a -> b -> c -> d -> e -> m g (>>======) mf f a b c d e = f a b c d e =<< mf infixr 2 >>======