module Control.Monad.Syntax.Six where


(======<<) :: Monad m =>
              (a -> b -> c -> d -> e -> f -> m g)
           -> m a
           -> b -> c -> d -> e -> f -> m g
(======<<) mf x b c d e f = x >>= (\a -> mf a b c d e f)

infixr 1 ======<<

(=.====<<) :: Monad m =>
              (a -> b -> c -> d -> e -> f -> m g)
           -> m b
           -> a -> c -> d -> e -> f -> m g
(=.====<<) mf x a c d e f = x >>= (\b -> mf a b c d e f)

infixr 1 =.====<<

(==.===<<) :: Monad m =>
              (a -> b -> c -> d -> e -> f -> m g)
           -> m c
           -> a -> b -> d -> e -> f -> m g
(==.===<<) mf x a b d e f = x >>= (\c -> mf a b c d e f)

infixr 1 ==.===<<

(===.==<<) :: Monad m =>
              (a -> b -> c -> d -> e -> f -> m g)
           -> m d
           -> a -> b -> c -> e -> f -> m g
(===.==<<) mf x a b c e f = x >>= (\d -> mf a b c d e f)

infixr 1 ===.==<<

(====.=<<) :: Monad m =>
              (a -> b -> c -> d -> e -> f -> m g)
           -> m e
           -> a -> b -> c -> d -> f -> m g
(====.=<<) mf x a b c d f = x >>= (\e -> mf a b c d e f)

infixr 1 ====.=<<

(=====.<<) :: Monad m =>
              (a -> b -> c -> d -> e -> f -> m g)
           -> m f
           -> a -> b -> c -> d -> e -> m g
(=====.<<) mf x a b c d e = x >>= mf a b c d e

infixr 1 =====.<<