Safe Haskell | None |
---|---|
Language | Haskell2010 |
STM Queues, based originally on pipes-concurrency
Synopsis
- data Queue a
- queueL :: MonadConc m => Queue a -> (Committer m a -> m l) -> (Emitter m a -> m r) -> m l
- queueR :: MonadConc m => Queue a -> (Committer m a -> m l) -> (Emitter m a -> m r) -> m r
- queue :: MonadConc m => Queue a -> (Committer m a -> m l) -> (Emitter m a -> m r) -> m (l, r)
- fromAction :: MonadConc m => (Box m a b -> m r) -> CoBox m b a
- emitQ :: MonadConc m => Queue a -> (Committer m a -> m r) -> CoEmitter m a
- commitQ :: MonadConc m => Queue a -> (Emitter m a -> m r) -> CoCommitter m a
Documentation
Queue
specifies how messages are queued
queueL :: MonadConc m => Queue a -> (Committer m a -> m l) -> (Emitter m a -> m r) -> m l Source #
Create an unbounded queue, returning the result from the Committer action.
>>>
queueL New (\c -> glue c <$|> qList [1..3]) toListM
queueR :: MonadConc m => Queue a -> (Committer m a -> m l) -> (Emitter m a -> m r) -> m r Source #
Create an unbounded queue, returning the result from the Emitter action.
>>>
queueR New (\c -> glue c <$|> qList [1..3]) toListM
[3]
queue :: MonadConc m => Queue a -> (Committer m a -> m l) -> (Emitter m a -> m r) -> m (l, r) Source #
Create an unbounded queue, returning both results.
>>>
queue Unbounded (\c -> glue c <$|> qList [1..3]) toListM
((),[1,2,3])
fromAction :: MonadConc m => (Box m a b -> m r) -> CoBox m b a Source #
Turn a box action into a box continuation