Rattus-0.5.1: A modal FRP language
Safe HaskellSafe-Inferred
LanguageHaskell2010

Rattus.Event

Description

Programming with many-shot events, i.e. events that may occur zero or more times.

Synopsis

Documentation

map :: Box (a -> b) -> Event a -> Event b Source #

Apply a function to the values of the event (every time it occurs).

never :: Event a Source #

An event that will never occur.

switch :: Str a -> Event (Str a) -> Str a Source #

switch s e will behave like s but switches to s'$ every time the event e occurs with some value s'@.

switchTrans :: (Str a -> Str b) -> Event (Str a -> Str b) -> Str a -> Str b Source #

Like switch but works on stream functions instead of streams. That is, switchTrans s e will behave like s but switches to s'$ every time the event e occurs with some value s'@.

dswitchTrans :: (Str a -> Str b) -> O (Event (Str a -> Str b)) -> Str a -> Str b Source #

Like switchTrans but takes a delayed event as input, which allows the switch to incorporate feedback from itself.

combine :: Box (a -> a -> a) -> Str a -> Event (Str a) -> Str a Source #

combine f s e is similar to switch s e, but instead of switching to new streams s' every time the event e occurs with some value s', the new stream s' is combined with the current stream s using zipWith f s' s.

type Event a = Str (Maybe' a) Source #

Events are simply streams of Maybe's.

trigger :: Box (a -> Bool) -> Str a -> Event a Source #

Trigger an event as every time the given predicate turns true on the given stream. The value of the event is the same as that of the stream at that time.

triggerMap :: Box (a -> Maybe' b) -> Str a -> Event b Source #

Trigger an event every time the given function produces a Just' value.