-- | Monadic combinators missing from the standard library module Control.Monad.TM ( (.>>=.) , (.=<<.) ) where import Data.Traversable import Control.Monad hiding (mapM) import Prelude hiding (mapM) -- | Lifting bind into a monad. Often denoted /concatMapM/. (.>>=.) :: (Monad q, Monad m, Traversable m) => (a -> q (m b)) -> m a -> q (m b) (.>>=.) f = liftM join . mapM f -- | Lifting bind into a monad. Often denoted /concatMapM/. (.=<<.) :: (Monad q, Monad m, Traversable m) => m a -> (a -> q (m b)) -> q (m b) (.=<<.) = flip (.>>=.)