automaton-1.5: Effectful streams and automata in coalgebraic encoding
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Stream.Recursive

Synopsis

Documentation

newtype Recursive m a Source #

A stream transformer in recursive encoding.

One step of the stream transformer performs a monadic action and results in an output and a new stream.

Constructors

Recursive 

Fields

Instances

Instances details
MFunctor Recursive Source # 
Instance details

Defined in Data.Stream.Recursive

Methods

hoist :: forall m n (b :: k). Monad m => (forall a. m a -> n a) -> Recursive m b -> Recursive n b #

Alternative m => Alternative (Recursive m) Source # 
Instance details

Defined in Data.Stream.Recursive

Methods

empty :: Recursive m a #

(<|>) :: Recursive m a -> Recursive m a -> Recursive m a #

some :: Recursive m a -> Recursive m [a] #

many :: Recursive m a -> Recursive m [a] #

Applicative m => Applicative (Recursive m) Source # 
Instance details

Defined in Data.Stream.Recursive

Methods

pure :: a -> Recursive m a #

(<*>) :: Recursive m (a -> b) -> Recursive m a -> Recursive m b #

liftA2 :: (a -> b -> c) -> Recursive m a -> Recursive m b -> Recursive m c #

(*>) :: Recursive m a -> Recursive m b -> Recursive m b #

(<*) :: Recursive m a -> Recursive m b -> Recursive m a #

Functor m => Functor (Recursive m) Source # 
Instance details

Defined in Data.Stream.Recursive

Methods

fmap :: (a -> b) -> Recursive m a -> Recursive m b #

(<$) :: a -> Recursive m b -> Recursive m a #

toRecursive :: Functor m => StreamT m a -> Recursive m a Source #

Translate a coalgebraically encoded stream into a recursive one.

This is usually a performance penalty.

fromRecursive :: Recursive m a -> StreamT m a Source #

Translate a recursive stream into a coalgebraically encoded one.

The internal state is the stream itself.

constM :: Functor m => m a -> Recursive m a Source #

Constantly perform the same effect, without remembering a state.