streamly-0.8.3: Dataflow programming and declarative concurrency
Copyright(c) 2021 Composewell Technologies
LicenseBSD-3-Clause
Maintainerstreamly@composewell.com
Stabilityexperimental
PortabilityGHC
Safe HaskellSafe-Inferred
LanguageHaskell2010

Streamly.Internal.Data.Producer.Type

Description

See Streamly.Internal.Data.Producer for introduction.

Synopsis

Type

data Producer m a b Source #

A Producer m a b is a generator of a stream of values of type b from a seed of type a in Monad m.

Pre-release

Constructors

forall s. Producer (s -> m (Step s b)) (a -> m s) (s -> m a)
Producer step inject extract

Instances

Instances details
Functor m => Functor (Producer m a) Source #

Maps a function on the output of the producer (the type b).

Instance details

Defined in Streamly.Internal.Data.Producer.Type

Methods

fmap :: (a0 -> b) -> Producer m a a0 -> Producer m a b #

(<$) :: a0 -> Producer m a b -> Producer m a a0 #

Producers

nil :: Monad m => Producer m a b Source #

nilM :: Monad m => (a -> m c) -> Producer m a b Source #

unfoldrM :: Monad m => (a -> m (Maybe (b, a))) -> Producer m a b Source #

fromList :: Monad m => Producer m [a] a Source #

Convert a list of pure values to a Stream

Pre-release

Mapping

translate :: Functor m => (a -> c) -> (c -> a) -> Producer m c b -> Producer m a b Source #

Interconvert the producer between two interconvertible input types.

Pre-release

lmap :: (a -> a) -> Producer m a b -> Producer m a b Source #

Map the producer input to another value of the same type.

Pre-release

Nesting

data NestedLoop s1 s2 Source #

State representing a nested loop.

Constructors

OuterLoop s1 
InnerLoop s1 s2 

concat :: Monad m => Producer m a b -> Producer m b c -> Producer m (NestedLoop a b) c Source #

Apply the second unfold to each output element of the first unfold and flatten the output in a single stream.

Pre-release