module Control.Monad.Syntax.Five where


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

infixr 1 =====<<

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

infixr 1 =.===<<

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

infixr 1 ==.==<<

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

infixr 1 ===.=<<

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

infixr 1 ====.<<