module Control.Monad.Composition where (>>==) :: Monad m => m b -> (a -> b -> m c) -> a -> m c (>>==) mb f a = f a =<< mb (>>===) :: Monad m => m c -> (a -> b -> c -> m d) -> a -> b -> m d (>>===) mc f a b = f a b =<< mc (>>====) :: 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 (>>=====) :: 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 (>>======) :: 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 (==<<) :: Monad m => (a -> b -> m c) -> m b -> a -> m c (==<<) = flip (>>==) (===<<) :: Monad m => (a -> b -> c -> m d) -> m c -> a -> b -> m d (===<<) = flip (>>===) (====<<) :: Monad m => (a -> b -> c -> d -> m e) -> m d -> a -> b -> c -> m e (====<<) = flip (>>====) (=====<<) :: Monad m => (a -> b -> c -> d -> e -> m f) -> m e -> a -> b -> c -> d -> m f (=====<<) = flip (>>=====) (======<<) :: Monad m => (a -> b -> c -> d -> e -> f -> m g) -> m f -> a -> b -> c -> d -> e -> m g (======<<) = flip (>>======)