Safe Haskell | None |
---|---|
Language | Haskell98 |
Reactive.Banana.Bunch.Combinators
Synopsis
- data Event a
- data Behavior a
- class MonadFix m => MonadMoment (m :: Type -> Type) where
- liftMoment :: Moment a -> m a
- apply :: Behavior (a -> b) -> Event a -> Event b
- (<@>) :: Behavior (a -> b) -> Event a -> Event b
- union :: Event a -> Event a -> Event a
- filterE :: (a -> Bool) -> Event a -> Event a
- filterJust :: Event (Maybe a) -> Event a
- accumB :: MonadMoment m => a -> Event (a -> a) -> m (Behavior a)
- accumE :: MonadMoment m => a -> Event (a -> a) -> m (Event a)
- mapAccum :: MonadMoment m => acc -> Event (acc -> (x, acc)) -> m (Event x, Behavior acc)
- stepper :: MonadMoment m => a -> Event a -> m (Behavior a)
- valueBLater :: MonadMoment m => Behavior a -> m a
- collect :: Event a -> Event (T [] a)
- spill :: Event (T [] a) -> Event a
Documentation
Behavior a
represents a value that varies in time.
Semantically, you can think of it as a function
type Behavior a = Time -> a
Instances
Applicative Behavior # | The function pure :: a -> Behavior a pure x = \time -> x The combinator (<*>) :: Behavior (a -> b) -> Behavior a -> Behavior b fx <*> bx = \time -> fx time $ bx time |
Functor Behavior # | The function fmap :: (a -> b) -> Behavior a -> Behavior b fmap f b = \time -> f (b time) |
(Semigroup a, Monoid a) => Monoid (Behavior a) # | |
Semigroup a => Semigroup (Behavior a) # | |
IsString a => IsString (Behavior a) # | |
Defined in Reactive.Banana.Types Methods fromString :: String -> Behavior a # | |
Floating a => Floating (Behavior a) # | |
Defined in Reactive.Banana.Types Methods exp :: Behavior a -> Behavior a # log :: Behavior a -> Behavior a # sqrt :: Behavior a -> Behavior a # (**) :: Behavior a -> Behavior a -> Behavior a # logBase :: Behavior a -> Behavior a -> Behavior a # sin :: Behavior a -> Behavior a # cos :: Behavior a -> Behavior a # tan :: Behavior a -> Behavior a # asin :: Behavior a -> Behavior a # acos :: Behavior a -> Behavior a # atan :: Behavior a -> Behavior a # sinh :: Behavior a -> Behavior a # cosh :: Behavior a -> Behavior a # tanh :: Behavior a -> Behavior a # asinh :: Behavior a -> Behavior a # acosh :: Behavior a -> Behavior a # atanh :: Behavior a -> Behavior a # log1p :: Behavior a -> Behavior a # expm1 :: Behavior a -> Behavior a # | |
Num a => Num (Behavior a) # | |
Defined in Reactive.Banana.Types | |
Fractional a => Fractional (Behavior a) # | |
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
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.