deriving-trans-0.5.0.0: src/Control/Monad/Trans/Compose/Infix.hs
module Control.Monad.Trans.Compose.Infix where
import Control.Monad.Trans.Compose
import Control.Monad.Trans.Control
-- | A flipped type-level infix operator for 'ComposeT'.
type (.|>) t2 t1 = ComposeT t1 t2
infixl 1 .|>
-- | A 'flip'ped infix operator for 'runComposeT'.
(./>) :: (forall a. t2 m a -> m (StT t2 a)) -- ^ run @t2@
-> (forall a. t1 (t2 m) a -> t2 m (StT t1 a)) -- ^ run @t1@
-> (forall a. (t2 .|> t1) m a -> m (StT t2 (StT t1 a)))
(./>) runT2 runT1 = runComposeT runT1 runT2
infixl 1 ./>
-- | A 'flip'ped infix operator for 'runComposeT''.
(..>) :: (t2 m a -> m a) -- ^ run @t2@
-> (t1 (t2 m) a -> t2 m a) -- ^ run @t1@
-> ((t2 .|> t1) m a -> m a)
(..>) runT2 runT1 = runComposeT' runT1 runT2
infixl 1 ..>