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