flow-er-1.0.0: src/Control/Flower/Monad.hs
{-|
Module : Control.Flower.Monad
Description : Combinators for directional monadic mapping
-}
module Control.Flower.Monad (
(<<$), ($>>),
(=<<$), ($>>=)
) where
{- $setup
>>> import Control.Flower.Compose
>>> let x = Just 3
>>> let y = Just 4
>>> let f = (+2)
>>> let g = (*2)
>>> let h = (+)
-}
{-| A left-associative operator alias for 'Control.Monad.mapM'
>>> putStrLn <. show <<$ [1,2,3]
1
2
3
-}
infixl 4 <<$
(<<$) :: (Foldable f, Monad m) => (a -> m b) -> f a -> m ()
(<<$) = mapM_
{-| An operator alias for 'Control.Monad.mapM'
>>> [1,2,3] $>> show .> putStrLn
1
2
3
-}
infixr 4 $>>
($>>) :: (Foldable f, Monad m) => f a -> (a -> m b) -> m ()
($>>) = flip mapM_
{-| A left-associative operator alias for 'Control.Monad.mapM'
>>> (\x -> [x+1]) =<<$ [1,2,3]
[[2,3,4]]
-}
infixl 4 =<<$
(=<<$) :: (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b)
(=<<$) = mapM
{-| An operator alias for 'Control.Monad.mapM'
>>> [1,2,3] $>>= \x -> [x+1]
[[2,3,4]]
-}
infixr 4 $>>=
($>>=) :: (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b)
($>>=) = flip mapM