Control.Coroutine
- Package
- purescript-coroutines
- Repository
- purescript-contrib/purescript-coroutines
This module defines types and functions for working with coroutines. Coroutines are defined based on some underlying functor, which means that the same machinery can be used for coroutines which emit values, await values, fork, join, or any combination.
#runProcess Source
runProcess :: forall m a. MonadRec m => Process m a -> m aRun a Process to completion.
#Transformer Source
type Transformer :: Type -> Type -> (Type -> Type) -> Type -> Typetype Transformer i o = Co (Transform i o)
A type synonym for a Coroutine which transforms values.
#transform Source
transform :: forall m i o. Monad m => (i -> o) -> Transformer i o m UnitTransform input values.
#CoTransform Source
data CoTransform i o aA generating functor which yields a value before waiting for an input.
Constructors
CoTransform o (i -> a)
Instances
Bifunctor (CoTransform i)Functor (CoTransform i o)
#CoTransformer Source
type CoTransformer :: Type -> Type -> (Type -> Type) -> Type -> Typetype CoTransformer i o = Co (CoTransform i o)
A type synonym for a Coroutine which "cotransforms" values, emitting an output
before waiting for its input.
#cotransform Source
cotransform :: forall m i o. Monad m => o -> CoTransformer i o m iCotransform input values.
#transformProducer Source
transformProducer :: forall i o f m a. MonadRec m => Parallel f m => Producer i m a -> Transformer i o m a -> Producer o m aTransform a producer.
#($~) Source
Operator alias for Control.Coroutine.transformProducer (right-associative / precedence 2)
#transformConsumer Source
transformConsumer :: forall i o f m a. MonadRec m => Parallel f m => Transformer i o m a -> Consumer o m a -> Consumer i m aTransform a consumer.
#(~$) Source
Operator alias for Control.Coroutine.transformConsumer (right-associative / precedence 2)
#composeTransformers Source
composeTransformers :: forall i j k f m a. MonadRec m => Parallel f m => Transformer i j m a -> Transformer j k m a -> Transformer i k m aCompose transformers
#(~~) Source
Operator alias for Control.Coroutine.composeTransformers (right-associative / precedence 2)
#composeCoTransformers Source
composeCoTransformers :: forall i j k f m a. MonadRec m => Parallel f m => CoTransformer i j m a -> CoTransformer j k m a -> CoTransformer i k m aCompose cotransformers
#fuseCoTransform Source
fuseCoTransform :: forall i o f m a. MonadRec m => Parallel f m => Transformer i o m a -> CoTransformer o i m a -> Process m aFuse a transformer and a cotransformer.
#transformCoTransformL Source
transformCoTransformL :: forall i1 i2 o f m a. MonadRec m => Parallel f m => Transformer i1 i2 m a -> CoTransformer i2 o m a -> CoTransformer i1 o m aTransform a CoTransformer on the left.
#transformCoTransformR Source
transformCoTransformR :: forall i o1 o2 f m a. MonadRec m => Parallel f m => CoTransformer i o1 m a -> Transformer o1 o2 m a -> CoTransformer i o2 m aTransform a CoTransformer on the right.
- Modules
- Control.
Coroutine