Safe Haskell | None |
---|---|
Language | Haskell2010 |
various ways to connect things up
Synopsis
- fuse_ :: Monad m => Emitter m a -> Committer m a -> m ()
- fuseSTM_ :: MonadConc m => Emitter (STM m) a -> Committer (STM m) a -> m ()
- fuse :: Monad m => (a -> m (Maybe b)) -> Cont m (Box m b a) -> m ()
- fuseSTM :: MonadConc m => (a -> STM m (Maybe b)) -> Cont m (Box (STM m) b a) -> m ()
- forkEmit :: Monad m => Emitter m a -> Committer m a -> Emitter m a
- feedback :: MonadConc m => (a -> m (Maybe b)) -> Cont m (Box m b a) -> Cont m (Box m b a)
- feedbackE :: MonadConc m => (a -> m (Maybe a)) -> Emitter m a -> Cont m (Emitter m a)
- fuseEmit :: MonadConc m => Emitter (STM m) a -> Cont m (Emitter (STM m) a)
- fuseEmitM :: MonadConc m => Emitter m a -> Cont m (Emitter m a)
- fuseCommit :: MonadConc m => Committer (STM m) a -> Cont m (Committer (STM m) a)
- fuseCommitM :: MonadConc m => Committer m a -> Cont m (Committer m a)
- emerge :: MonadConc m => Cont m (Emitter (STM m) a, Emitter (STM m) a) -> Cont m (Emitter (STM m) a)
- emergeM :: MonadConc m => Cont m (Emitter m a, Emitter m a) -> Cont m (Emitter m a)
- splitCommit :: MonadConc m => Cont m (Committer m a) -> Cont m (Either (Committer m a) (Committer m a))
- splitCommitSTM :: MonadConc m => Cont m (Committer (STM m) a) -> Cont m (Either (Committer (STM m) a) (Committer (STM m) a))
- contCommit :: Either (Committer m a) (Committer m b) -> (Committer m a -> Committer m b) -> Committer m b
Documentation
fuse_ :: Monad m => Emitter m a -> Committer m a -> m () Source #
fuse an emitter directly to a committer
fuseSTM_ :: MonadConc m => Emitter (STM m) a -> Committer (STM m) a -> m () Source #
slightly more efficient version
fuse :: Monad m => (a -> m (Maybe b)) -> Cont m (Box m b a) -> m () Source #
fuse a box
(fuse (pure . Just) $ liftB <$> (Box <$> cStdout 2 <*> emitter')) >> sleep 1
hi bye
etc () (Transducer id) == fuse (pure . pure) . fmap liftB
fuseSTM :: MonadConc m => (a -> STM m (Maybe b)) -> Cont m (Box (STM m) b a) -> m () Source #
fuse a box with an STM mapMaybe action
feedback :: MonadConc m => (a -> m (Maybe b)) -> Cont m (Box m b a) -> Cont m (Box m b a) Source #
a box modifier that feeds commits back to the emitter
feedbackE :: MonadConc m => (a -> m (Maybe a)) -> Emitter m a -> Cont m (Emitter m a) Source #
an emitter post-processor that cons transformed emissions back into the emitter
fuseEmit :: MonadConc m => Emitter (STM m) a -> Cont m (Emitter (STM m) a) Source #
fuse an emitter to a buffer
fuseCommit :: MonadConc m => Committer (STM m) a -> Cont m (Committer (STM m) a) Source #
fuse a committer to a buffer
fuseCommitM :: MonadConc m => Committer m a -> Cont m (Committer m a) Source #
fuse a committer to a buffer
emerge :: MonadConc m => Cont m (Emitter (STM m) a, Emitter (STM m) a) -> Cont m (Emitter (STM m) a) Source #
merge two emitters
This differs from `liftA2 (<>)` in that the monoidal (and alternative) instance of an Emitter is left-biased (The left emitter exhausts before the right one is begun). This merge is concurrent.
emergeM :: MonadConc m => Cont m (Emitter m a, Emitter m a) -> Cont m (Emitter m a) Source #
monadic version
splitCommit :: MonadConc m => Cont m (Committer m a) -> Cont m (Either (Committer m a) (Committer m a)) Source #
split a committer