module Control.Monad.Syntax.Three where (===<<) :: Monad m => (a -> b -> c -> m d) -> m a -> b -> c -> m d (===<<) mf inp b c = inp >>= (\a -> mf a b c) infixl 1 ===<< (=.=<<) :: Monad m => (a -> b -> c -> m d) -> m b -> a -> c -> m d (=.=<<) mf inp a c = inp >>= (\b -> mf a b c) infixl 1 =.=<< (==.<<) :: Monad m => (a -> b -> c -> m d) -> m c -> a -> b -> m d (==.<<) mf inp a b = inp >>= mf a b infixl 1 ==.<<