barrier-monad-0.1.0.1: Implementation of barrier monad, can use custom front/back type

Control.Monad.Barrier

Documentation

data Barrier f b t Source

Constructors

Unit t 
Barrier f (b -> Barrier f b t) 
Fail String 

convert :: (f -> f') -> (b' -> b) -> Barrier f b t -> Barrier f' b' tSource

rebind :: (f -> Barrier f' b b) -> Barrier f b t -> Barrier f' b tSource

yield :: f -> Barrier f b bSource

continue :: Barrier f b t -> b -> Barrier f b tSource

collect :: Barrier f () t -> [f]Source

uncollect :: [x] -> Barrier x a ()Source

perform :: (f -> s -> (b, s)) -> (String -> s -> o) -> (t -> s -> o) -> s -> Barrier f b t -> oSource

operate :: Monad m => (f -> m b) -> Barrier f b t -> m tSource

opencont :: Barrier f b t -> Barrier (f, b -> Barrier f b t) (Barrier f b t) tSource

closecont :: Barrier (f, b -> Barrier f b t) (Barrier f b t) t -> Barrier f b tSource

crosstalk :: Barrier f b t1 -> Barrier b f t2 -> [(f, b)]Source

collectBS :: BarrierStream b f -> [b] -> [f]Source

convertBS :: (b' -> b) -> BarrierStream b f -> BarrierStream b' fSource

newtype BarrierT f b m t Source

Constructors

BarrierT 

Fields

runBarrierT :: m (Either t (f, b -> BarrierT f b m t))
 

Instances

MonadTrans (BarrierT f b) 
(Functor m, Monad m) => Monad (BarrierT f b m) 
Functor m => Functor (BarrierT f b m) 
(Functor m, MonadPlus m) => MonadPlus (BarrierT f b m) 
(Functor m, Monad m) => Applicative (BarrierT f b m) 
(Alternative m, Monad m) => Alternative (BarrierT f b m) 
Comonad w => Comonad (BarrierT z z w) 
Comonad w => Extend (BarrierT f b w) 
(Functor m, MonadIO m) => MonadIO (BarrierT f b m) 

yieldT :: (Functor m, Monad m) => f -> BarrierT f b m bSource

approachT :: Functor m => BarrierT f b m t -> m (Maybe f)Source

continueT :: (Functor m, Monad m) => BarrierT f b m t -> b -> BarrierT f b m tSource

convertT :: Functor m => (f -> f') -> (b' -> b) -> BarrierT f b m t -> BarrierT f' b' m tSource

operateT :: (Functor m, Monad m) => (f -> m b) -> BarrierT f b m t -> m tSource

collectT :: (Functor m, Monad m) => BarrierT f () m t -> m [f]Source

opencontT :: Functor m => BarrierT f b m t -> BarrierT (f, b -> BarrierT f b m t) (BarrierT f b m t) m tSource

closecontT :: Functor m => BarrierT (f, b -> BarrierT f b m t) (BarrierT f b m t) m t -> BarrierT f b m tSource

crosstalkT :: (Functor m, Monad m) => BarrierT f b m t1 -> BarrierT b f m t2 -> m [(f, b)]Source

operatesT :: (Functor m, Monad m) => (s -> f -> m (s, b)) -> s -> BarrierT f b m t -> m (s, t)Source

liftBarrier :: Monad m => Barrier f b t -> BarrierT f b m tSource

unliftBarrier :: Comonad w => BarrierT f b w t -> Barrier f b tSource