module Control.Monad.Syntax.Four where (====<<) :: Monad m => (a -> b -> c -> d -> m e) -> m a -> b -> c -> d -> m e (====<<) mf x b c d = x >>= (\a -> mf a b c d) infixr 1 ====<< (=.==<<) :: Monad m => (a -> b -> c -> d -> m e) -> m b -> a -> c -> d -> m e (=.==<<) mf x a c d = x >>= (\b -> mf a b c d) infixr 1 =.==<< (==.=<<) :: Monad m => (a -> b -> c -> d -> m e) -> m c -> a -> b -> d -> m e (==.=<<) mf x a b d = x >>= (\c -> mf a b c d) infixr 1 ==.=<< (===.<<) :: Monad m => (a -> b -> c -> d -> m e) -> m d -> a -> b -> c -> m e (===.<<) mf x a b c = x >>= mf a b c infixr 1 ===.<<