reactive-banana-bunch
Safe HaskellNone
LanguageHaskell98

Reactive.Banana.Bunch.Combinators

Synopsis

Documentation

data Event a Source #

Instances

Instances details
Functor Event Source # 
Instance details

Defined in Reactive.Banana.Bunch.Private

Methods

fmap :: (a -> b) -> Event a -> Event b #

(<$) :: a -> Event b -> Event a #

data Behavior a #

Behavior a represents a value that varies in time. Semantically, you can think of it as a function

type Behavior a = Time -> a

Instances

Instances details
Applicative Behavior #

The function pure returns a value that is constant in time. Semantically,

pure     :: a -> Behavior a
pure x    = \time -> x

The combinator <*> applies a time-varying function to a time-varying value.

(<*>)    :: Behavior (a -> b) -> Behavior a -> Behavior b
fx <*> bx = \time -> fx time $ bx time
Instance details

Defined in Reactive.Banana.Types

Methods

pure :: a -> Behavior a #

(<*>) :: Behavior (a -> b) -> Behavior a -> Behavior b #

liftA2 :: (a -> b -> c) -> Behavior a -> Behavior b -> Behavior c #

(*>) :: Behavior a -> Behavior b -> Behavior b #

(<*) :: Behavior a -> Behavior b -> Behavior a #

Functor Behavior #

The function fmap applies a function f at every point in time. Semantically,

fmap :: (a -> b) -> Behavior a -> Behavior b
fmap f b = \time -> f (b time)
Instance details

Defined in Reactive.Banana.Types

Methods

fmap :: (a -> b) -> Behavior a -> Behavior b #

(<$) :: a -> Behavior b -> Behavior a #

(Semigroup a, Monoid a) => Monoid (Behavior a) # 
Instance details

Defined in Reactive.Banana.Types

Methods

mempty :: Behavior a #

mappend :: Behavior a -> Behavior a -> Behavior a #

mconcat :: [Behavior a] -> Behavior a #

Semigroup a => Semigroup (Behavior a) # 
Instance details

Defined in Reactive.Banana.Types

Methods

(<>) :: Behavior a -> Behavior a -> Behavior a #

sconcat :: NonEmpty (Behavior a) -> Behavior a #

stimes :: Integral b => b -> Behavior a -> Behavior a #

IsString a => IsString (Behavior a) # 
Instance details

Defined in Reactive.Banana.Types

Methods

fromString :: String -> Behavior a #

Floating a => Floating (Behavior a) # 
Instance details

Defined in Reactive.Banana.Types

Num a => Num (Behavior a) # 
Instance details

Defined in Reactive.Banana.Types

Fractional a => Fractional (Behavior a) # 
Instance details

Defined in Reactive.Banana.Types

class MonadFix m => MonadMoment (m :: Type -> Type) where #

An instance of the MonadMoment class denotes a computation that happens at one particular moment in time. Unlike the Moment monad, it need not be pure anymore.

Methods

liftMoment :: Moment a -> m a #

Instances

Instances details
MonadMoment Moment # 
Instance details

Defined in Reactive.Banana.Types

Methods

liftMoment :: Moment a -> Moment a #

MonadMoment MomentIO # 
Instance details

Defined in Reactive.Banana.Types

Methods

liftMoment :: Moment a -> MomentIO a #

MonadMoment m => MonadMoment (MaybeT m) # 
Instance details

Defined in Reactive.Banana.Types

Methods

liftMoment :: Moment a -> MaybeT m a #

(MonadMoment m, Monoid w) => MonadMoment (AccumT w m) # 
Instance details

Defined in Reactive.Banana.Types

Methods

liftMoment :: Moment a -> AccumT w m a #

MonadMoment m => MonadMoment (ExceptT e m) # 
Instance details

Defined in Reactive.Banana.Types

Methods

liftMoment :: Moment a -> ExceptT e m a #

MonadMoment m => MonadMoment (IdentityT m) # 
Instance details

Defined in Reactive.Banana.Types

Methods

liftMoment :: Moment a -> IdentityT m a #

MonadMoment m => MonadMoment (ReaderT r m) # 
Instance details

Defined in Reactive.Banana.Types

Methods

liftMoment :: Moment a -> ReaderT r m a #

MonadMoment m => MonadMoment (StateT s m) # 
Instance details

Defined in Reactive.Banana.Types

Methods

liftMoment :: Moment a -> StateT s m a #

MonadMoment m => MonadMoment (StateT s m) # 
Instance details

Defined in Reactive.Banana.Types

Methods

liftMoment :: Moment a -> StateT s m a #

MonadMoment m => MonadMoment (WriterT w m) # 
Instance details

Defined in Reactive.Banana.Types

Methods

liftMoment :: Moment a -> WriterT w m a #

(MonadMoment m, Monoid w) => MonadMoment (WriterT w m) # 
Instance details

Defined in Reactive.Banana.Types

Methods

liftMoment :: Moment a -> WriterT w m a #

(MonadMoment m, Monoid w) => MonadMoment (WriterT w m) # 
Instance details

Defined in Reactive.Banana.Types

Methods

liftMoment :: Moment a -> WriterT w m a #

MonadMoment m => MonadMoment (RWST r w s m) # 
Instance details

Defined in Reactive.Banana.Types

Methods

liftMoment :: Moment a -> RWST r w s m a #

(MonadMoment m, Monoid w) => MonadMoment (RWST r w s m) # 
Instance details

Defined in Reactive.Banana.Types

Methods

liftMoment :: Moment a -> RWST r w s m a #

(MonadMoment m, Monoid w) => MonadMoment (RWST r w s m) # 
Instance details

Defined in Reactive.Banana.Types

Methods

liftMoment :: Moment a -> RWST r w s m a #

apply :: Behavior (a -> b) -> Event a -> Event b Source #

(<@>) :: Behavior (a -> b) -> Event a -> Event b infixl 4 Source #

union :: Event a -> Event a -> Event a Source #

filterE :: (a -> Bool) -> Event a -> Event a Source #

accumB :: MonadMoment m => a -> Event (a -> a) -> m (Behavior a) Source #

accumE :: MonadMoment m => a -> Event (a -> a) -> m (Event a) Source #

mapAccum :: MonadMoment m => acc -> Event (acc -> (x, acc)) -> m (Event x, Behavior acc) Source #

stepper :: MonadMoment m => a -> Event a -> m (Behavior a) Source #

valueBLater :: MonadMoment m => Behavior a -> m a #

Obtain the value of the Behavior at a given moment in time. Semantically, it corresponds to

valueBLater b = \time -> b time

Note: To allow for more recursion, the value is returned lazily and not available for pattern matching immediately. It can be used safely with most combinators like stepper. If that doesn't work for you, please use valueB instead.

collect :: Event a -> Event (T [] a) Source #

spill :: Event (T [] a) -> Event a Source #