-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | YieldT monad transformer
--
-- This package defines a class MonadYield a for monads that can
-- emit values values of type a while they run, and a monad
-- transformer YieldT a which implements this class such that
-- the emitted values can be captured in a streaming manner.
--
-- This is an amalgamation of concepts from pipes,
-- conduit, foldl, and kan-extensions,
-- combined into a small self-contained package.
@package yield
@version 0.0.0.0
module Control.Monad.Yield.Aggregation
-- | An effectful stream consumer
--
-- The type parameter x represents the consumer's internal
-- state.
data Aggregation m a b
Aggregation :: m x -> (x -> a -> m x) -> (x -> m b) -> Aggregation m a b
-- | Produce the initial state
[begin] :: Aggregation m a b -> m x
-- | Consume one item from the stream
[step] :: Aggregation m a b -> x -> a -> m x
-- | Produce the final result
[done] :: Aggregation m a b -> x -> m b
noAggregation :: Applicative m => Aggregation m a ()
seqAggregation :: Applicative m => Aggregation m a (Seq a)
listAggregation :: Applicative m => Aggregation m a [a]
instance GHC.Base.Functor m => GHC.Base.Functor (Control.Monad.Yield.Aggregation.Aggregation m a)
module Control.Monad.Yield.Class
class Monad m => MonadYield (a :: Type) (m :: Type -> Type) | m -> a
yield :: MonadYield a m => a -> m ()
module Control.Monad.Trans.Yield
-- | Monad transformer that adds dynamically interpretable
-- MonadYield support
data YieldT a m r
-- | Runs a YieldT computation in the base monad
runYieldT :: forall a b m r. Monad m => Aggregation m a b -> YieldT a m r -> m (b, r)
-- | Transforms a YieldT's base monad actions
hoistYieldT :: forall m n a r. Monad m => (forall x. m x -> n x) -> YieldT a m r -> YieldT a n r
instance GHC.Base.Functor m => GHC.Base.Functor (Control.Monad.Trans.Yield.Yielder a m)
instance GHC.Base.Monad (Control.Monad.Trans.Yield.YieldT a m)
instance GHC.Base.Applicative (Control.Monad.Trans.Yield.YieldT a m)
instance GHC.Base.Functor (Control.Monad.Trans.Yield.YieldT a m)
instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Control.Monad.Trans.Yield.YieldT a m)
instance GHC.Base.Functor m => Control.Monad.Yield.Class.MonadYield a (Control.Monad.Trans.Yield.YieldT a m)
instance Control.Monad.Reader.Class.MonadReader r m => Control.Monad.Reader.Class.MonadReader r (Control.Monad.Trans.Yield.YieldT a m)
instance Control.Monad.State.Class.MonadState s m => Control.Monad.State.Class.MonadState s (Control.Monad.Trans.Yield.YieldT a m)
instance Control.Monad.Trans.Class.MonadTrans (Control.Monad.Trans.Yield.YieldT a)
instance GHC.Base.Functor m => GHC.Base.Applicative (Control.Monad.Trans.Yield.Yielder a m)
instance GHC.Base.Functor m => GHC.Base.Monad (Control.Monad.Trans.Yield.Yielder a m)
instance GHC.Base.Functor m => Control.Monad.Yield.Class.MonadYield a (Control.Monad.Trans.Yield.Yielder a m)
instance Control.Monad.Trans.Class.MonadTrans (Control.Monad.Trans.Yield.Yielder a)
instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Control.Monad.Trans.Yield.Yielder a m)
instance Control.Monad.Reader.Class.MonadReader r m => Control.Monad.Reader.Class.MonadReader r (Control.Monad.Trans.Yield.Yielder a m)
instance Control.Monad.State.Class.MonadState s m => Control.Monad.State.Class.MonadState s (Control.Monad.Trans.Yield.Yielder a m)
module Control.Monad.Yield
class Monad m => MonadYield (a :: Type) (m :: Type -> Type) | m -> a
yield :: MonadYield a m => a -> m ()
-- | Monad transformer that adds dynamically interpretable
-- MonadYield support
data YieldT a m r
-- | Runs a YieldT computation in the base monad
runYieldT :: forall a b m r. Monad m => Aggregation m a b -> YieldT a m r -> m (b, r)
-- | Transforms a YieldT's base monad actions
hoistYieldT :: forall m n a r. Monad m => (forall x. m x -> n x) -> YieldT a m r -> YieldT a n r
-- | An effectful stream consumer
--
-- The type parameter x represents the consumer's internal
-- state.
data Aggregation m a b
Aggregation :: m x -> (x -> a -> m x) -> (x -> m b) -> Aggregation m a b
-- | Produce the initial state
[begin] :: Aggregation m a b -> m x
-- | Consume one item from the stream
[step] :: Aggregation m a b -> x -> a -> m x
-- | Produce the final result
[done] :: Aggregation m a b -> x -> m b
noAggregation :: Applicative m => Aggregation m a ()
seqAggregation :: Applicative m => Aggregation m a (Seq a)
listAggregation :: Applicative m => Aggregation m a [a]