monad-resumption-0.1.3.0: Resumption and reactive resumption monads for Haskell.

Safe HaskellSafe
LanguageHaskell2010

Control.Monad.Resumption.Reactive

Description

A reactive resumption monad transformer, based on the formulation in the article Cheap (But Functional) Threads by William L. Harrison and Adam Procter.

Synopsis

Documentation

newtype ReacT input output m a Source #

Reactive resumption monad transformer.

Constructors

ReacT 

Fields

Instances

MFunctor * (ReacT i o) Source # 

Methods

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

MonadTrans (ReacT input output) Source # 

Methods

lift :: Monad m => m a -> ReacT input output m a #

Monad m => Monad (ReacT input output m) Source # 

Methods

(>>=) :: ReacT input output m a -> (a -> ReacT input output m b) -> ReacT input output m b #

(>>) :: ReacT input output m a -> ReacT input output m b -> ReacT input output m b #

return :: a -> ReacT input output m a #

fail :: String -> ReacT input output m a #

Monad m => Functor (ReacT input output m) Source # 

Methods

fmap :: (a -> b) -> ReacT input output m a -> ReacT input output m b #

(<$) :: a -> ReacT input output m b -> ReacT input output m a #

Monad m => Applicative (ReacT input output m) Source # 

Methods

pure :: a -> ReacT input output m a #

(<*>) :: ReacT input output m (a -> b) -> ReacT input output m a -> ReacT input output m b #

liftA2 :: (a -> b -> c) -> ReacT input output m a -> ReacT input output m b -> ReacT input output m c #

(*>) :: ReacT input output m a -> ReacT input output m b -> ReacT input output m b #

(<*) :: ReacT input output m a -> ReacT input output m b -> ReacT input output m a #

MonadIO m => MonadIO (ReacT input output m) Source # 

Methods

liftIO :: IO a -> ReacT input output m a #

signal :: Monad m => output -> ReacT input output m input Source #

Outputs its argument, then waits for the next input and returns it.

(<~>) :: Monad m => ReacT i o m a -> ReacT o i m b -> ResT m (Either a b) Source #

Tennis operator.

runReacT :: Monad m => ReacT input output m a -> (output -> m input) -> m a Source #

A basic runner function. Provide the ReacT and a handler in the underlying monad to run.

iter :: Monad m => (i -> o) -> o -> ReacT i o m a Source #

A function for lifting pure functions to Reactive Resumptions. Initial output is provided as the second argument.