Write stream processing computations with side effects in a series of tubes.
This package provides the Tube
monad transformer, allowing any monad computation to become a stream processing pipeline. A computation of type Tube a b m r
consumes values of type a
and produces values of type b
.
Specialized Tube
s exist which allow for stream branching, merging, and other non-linear control. These are Source
, Sink
, and Channel
.
Also provided are Pump
s, the comonadic dual to Tube
s. Examples are provided of how they can be used with Tube
s but we have almost certainly only scratched the surface.
Examples and more information may be found at https://github.com/gatlin/tubes.
I seem to have trouble uploading packages where the documentation can be built correctly on Hackage. If I have (once again) messed this up, you can find Haddock documentation at https://niltag.net/tubes. I apologize for any inconvenience!
This should compile on GHC 7.8, but the problem is that previous attempts at setting the versions properly rendered Hackage unable to generate documentation. Hopefully I have this fixed but any advice is welcome.