@hackage streaming0.1.0.3

A general free monad transformer optimized for streaming applications.

Stream can be used wherever FreeT is used. The compiler is better able to optimize operations written in terms of Stream.

An associated prelude of functions, closely following Pipes.Prelude is focused on on employment with a base functor like ((,) a) (here called Of a) which generates effectful sequences or producers - Pipes.Producer, Conduit.Source, IOStreams.InputStream, IOStreams.Generator and the like.

Interoperation with pipes is accomplished with this isomorphism:

Pipes.unfoldr Streaming.next :: Stream (Of a) m r -> Producer a m r
Stream.unfoldr Pipes.next    :: Producer a m r -> Stream (Of a) m r

Exit to conduit and iostreams is thus:

Conduit.unfoldM Streaming.uncons   :: Stream (Of a) m ()  -> Source m a
IOStreams.unfoldM Streaming.uncons :: Stream (Of a) IO () -> InputStream a