dunai-0.1.0.0: Generalised reactive framework supporting classic, arrowized and monadic FRP.

Safe HaskellSafe
LanguageHaskell2010

Data.MonadicStreamFunction

Contents

Description

Monadic Stream Functions are synchronized stream functions with side effects.

Synopsis

Documentation

Instances for monadic streams

Lifts

insert :: Monad m => MStreamF m (m a) a Source #

Deprecated: Don't use this. liftMStreamF id instead

liftMStreamF_ :: Monad m => m b -> MStreamF m a b Source #

Monadic lifting from one monad into another

Monad stacks

(^>>>) :: MonadBase m1 m2 => MStreamF m1 a b -> MStreamF m2 b c -> MStreamF m2 a c Source #

(>>>^) :: MonadBase m1 m2 => MStreamF m2 a b -> MStreamF m1 b c -> MStreamF m2 a c Source #

Delays and signal overwriting

iPost :: Monad m => b -> MStreamF m a b -> MStreamF m a b Source #

next :: Monad m => b -> MStreamF m a b -> MStreamF m a b Source #

Switching

untilS :: Monad m => MStreamF m a b -> MStreamF m b Bool -> MStreamF m a (b, Maybe ()) Source #

andThen :: Monad m => MStreamF m a (b, Maybe ()) -> MStreamF m a b -> MStreamF m a b Source #

Feedback loops

Adding side effects

withSideEffect :: Monad m => (a -> m b) -> MStreamF m a a Source #

withSideEffect_ :: Monad m => m b -> MStreamF m a a Source #

Debugging

traceGeneral :: (Monad m, Show a) => (String -> m ()) -> String -> MStreamF m a a Source #

pauseOnGeneral :: (Monad m, Show a) => (a -> Bool) -> (String -> m ()) -> String -> MStreamF m a a Source #

pauseOn :: Show a => (a -> Bool) -> String -> MStreamF IO a a Source #

Tests and examples

sum :: (Monoid n, Monad m) => MStreamF m n n Source #

sumFrom :: (Monoid n, Monad m) => n -> MStreamF m n n Source #

count :: (Num n, Monad m) => MStreamF m () n Source #

unfold :: Monad m => (a -> (b, a)) -> a -> MStreamF m () b Source #

repeatedly :: Monad m => (a -> a) -> a -> MStreamF m () a Source #

mapMStreamF :: Monad m => MStreamF m a b -> MStreamF m [a] [b] Source #

Streams (or generators)

type MStream m a = MStreamF m () a Source #

Orphan instances

Functor m => Functor (MStreamF m r) Source # 

Methods

fmap :: (a -> b) -> MStreamF m r a -> MStreamF m r b #

(<$) :: a -> MStreamF m r b -> MStreamF m r a #

Applicative m => Applicative (MStreamF m r) Source # 

Methods

pure :: a -> MStreamF m r a #

(<*>) :: MStreamF m r (a -> b) -> MStreamF m r a -> MStreamF m r b #

(*>) :: MStreamF m r a -> MStreamF m r b -> MStreamF m r b #

(<*) :: MStreamF m r a -> MStreamF m r b -> MStreamF m r a #