As the hackage page describes:
pipes is a clean and powerful stream processing library that lets you build and connect reusable streaming components
Programs implemented through streaming can often be succinct and composable, with simple, short functions allowing you to "slot in or out" features easily with the backing of the Haskell type system.
await :: Monad m => Consumer' a m a
Pulls a value from upstream, where a
is our input type.
yield :: Monad m => a -> Producer' a m ()
Produce a value, where a
is the output type.
It's highly recommended you read through the embedded Pipes.Tutorial
package which gives an excellent overview of the core concepts of Pipes and how Producer
, Consumer
and Effect
interact.