| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Network.Top.Pipes
Contents
Description
Access Top connections as Pipes
- pipeIn :: (Show a, MonadIO m, Flat a) => Connection a -> Producer a m ()
- pipeOut :: (Show a, MonadIO m, Flat a) => Connection a -> Consumer a m ()
- runEffect :: Monad m => Effect m r -> m r
- (>->) :: Monad m => Proxy a' a () b m r -> Proxy () b c' c m r -> Proxy a' a c' c m r
- yield :: Monad m => a -> Producer' a m ()
- for :: Monad m => Proxy x' x b' b m a' -> (b -> Proxy x' x c' c m b') -> Proxy x' x c' c m a'
- await :: Monad m => Consumer' a m a
- lift :: MonadTrans t => forall m a. Monad m => m a -> t m a
Documentation
pipeIn :: (Show a, MonadIO m, Flat a) => Connection a -> Producer a m () Source #
Receive values from a typed connection, terminate when connection is closed
pipeOut :: (Show a, MonadIO m, Flat a) => Connection a -> Consumer a m () Source #
Send values on a typed connection, terminate when connection is closed
Re-exports from Pipe
runEffect :: Monad m => Effect m r -> m r #
Run a self-contained Effect, converting it back to the base monad
Pipe composition, analogous to the Unix pipe operator
(>->) ::Monadm =>Producerb m r ->Consumerb m r ->Effectm r (>->) ::Monadm =>Producerb m r ->Pipeb c m r ->Producerc m r (>->) ::Monadm =>Pipea b m r ->Consumerb m r ->Consumera m r (>->) ::Monadm =>Pipea b m r ->Pipeb c m r ->Pipea c m r
The following diagrams show the flow of information:
+-----------+ +-----------+ +-------------+
| | | | | |
| | | | | |
a ==> f ==> b ==> g ==> c = a ==> f >-> g ==> c
| | | | | |
| | | | | | | | |
+-----|-----+ +-----|-----+ +------|------+
v v v
r r r
For a more complete diagram including bidirectional flow, see Pipes.Core.
(for p body) loops over p replacing each yield with body.
for::Monadm =>Producerb m r -> (b ->Effectm ()) ->Effectm rfor::Monadm =>Producerb m r -> (b ->Producerc m ()) ->Producerc m rfor::Monadm =>Pipex b m r -> (b ->Consumerx m ()) ->Consumerx m rfor::Monadm =>Pipex b m r -> (b ->Pipex c m ()) ->Pipex c m r
The following diagrams show the flow of information:
.---> b
/ |
+-----------+ / +-----|-----+ +---------------+
| | / | v | | |
| | / | | | |
x ==> p ==> b ---' x ==> body ==> c = x ==> for p body ==> c
| | | | | |
| | | | | | | | |
+-----|-----+ +-----|-----+ +-------|-------+
v v v
r () r
For a more complete diagram including bidirectional flow, see Pipes.Core.
lift :: MonadTrans t => forall m a. Monad m => m a -> t m a #
Lift a computation from the argument monad to the constructed monad.