haskus-utils-1.0: src/lib/Haskus/Utils/Flow.hs
-- | Control-flow
module Haskus.Utils.Flow
( MonadIO (..)
, MonadInIO (..)
-- * Basic operators
, (|>)
, (<|)
, (||>)
, (<||)
-- * Monadic/applicative operators
, when
, unless
, whenM
, unlessM
, ifM
, guard
, void
, forever
, foldM
, foldM_
, forM
, forM_
, mapM
, mapM_
, sequence
, replicateM
, replicateM_
, filterM
, join
, (<=<)
, (>=>)
, loopM
, whileM
-- * Variant based operators
, module Haskus.Utils.Variant.Flow
)
where
import Haskus.Utils.Variant
import Haskus.Utils.Variant.Flow
import Haskus.Utils.Monad
-- | Apply a function
(|>) :: a -> (a -> b) -> b
{-# INLINE (|>) #-}
x |> f = f x
infixl 0 |>
-- | Apply a function
(<|) :: (a -> b) -> a -> b
{-# INLINE (<|) #-}
f <| x = f x
infixr 0 <|
-- | Apply a function in a Functor
(||>) :: Functor f => f a -> (a -> b) -> f b
{-# INLINE (||>) #-}
x ||> f = fmap f x
infixl 0 ||>
-- | Apply a function in a Functor
(<||) :: Functor f => (a -> b) -> f a -> f b
{-# INLINE (<||) #-}
f <|| x = fmap f x
infixr 0 <||