Yampa-0.10.5.1: Library for programming hybrid systems.

FRP.Yampa.Core

Synopsis

# Signal function

data SF a b Source #

Signal function that transforms a signal carrying values of some type a into a signal carrying values of some type b. You can think of it as (Signal a -> Signal b). A signal is, conceptually, a function from Time to value.

Instances

 Source # Methodsarr :: (b -> c) -> SF b c #first :: SF b c -> SF (b, d) (c, d) #second :: SF b c -> SF (d, b) (d, c) #(***) :: SF b c -> SF b' c' -> SF (b, b') (c, c') #(&&&) :: SF b c -> SF b c' -> SF b (c, c') # Source # Methodsloop :: SF (b, d) (c, d) -> SF b c # Source # Methodsid :: cat a a #(.) :: cat b c -> cat a b -> cat a c #

# Stateless combinators

iPre :: a -> SF a a Source #

Initialized delay operator.

arr :: Arrow a => forall b c. (b -> c) -> a b c #

Lift a function to an arrow.

(>>>) :: Category k cat => cat a b -> cat b c -> cat a c infixr 1 #

Left-to-right composition

first :: Arrow a => forall b c d. a b c -> a (b, d) (c, d) #

Send the first component of the input through the argument arrow, and copy the rest unchanged to the output.

# Stateful combinators

loop :: ArrowLoop a => forall b d c. a (b, d) (c, d) -> a b c #

integral :: VectorSpace a s => SF a a Source #

Integration using the rectangle rule.

## Switching upon certain events

data Event a Source #

A single possible event occurrence, that is, a value that may or may not occur. Events are used to represent values that are not produced continuously, such as mouse clicks (only produced when the mouse is clicked, as opposed to mouse positions, which are always defined).

Constructors

 NoEvent Event a

Instances

 Source # Monad instance Methods(>>=) :: Event a -> (a -> Event b) -> Event b #(>>) :: Event a -> Event b -> Event b #return :: a -> Event a #fail :: String -> Event a # Source # Functor instance (could be derived). Methodsfmap :: (a -> b) -> Event a -> Event b #(<\$) :: a -> Event b -> Event a # Source # Applicative instance (similar to Maybe). Methodspure :: a -> Event a #(<*>) :: Event (a -> b) -> Event a -> Event b #(*>) :: Event a -> Event b -> Event b #(<*) :: Event a -> Event b -> Event a # Source # Alternative instance Methodsempty :: Event a #(<|>) :: Event a -> Event a -> Event a #some :: Event a -> Event [a] #many :: Event a -> Event [a] # Eq a => Eq (Event a) Source # Eq instance (equivalent to derived instance) Methods(==) :: Event a -> Event a -> Bool #(/=) :: Event a -> Event a -> Bool # Ord a => Ord (Event a) Source # Ord instance (equivalent to derived instance) Methodscompare :: Event a -> Event a -> Ordering #(<) :: Event a -> Event a -> Bool #(<=) :: Event a -> Event a -> Bool #(>) :: Event a -> Event a -> Bool #(>=) :: Event a -> Event a -> Bool #max :: Event a -> Event a -> Event a #min :: Event a -> Event a -> Event a # Show a => Show (Event a) Source # MethodsshowsPrec :: Int -> Event a -> ShowS #show :: Event a -> String #showList :: [Event a] -> ShowS # NFData a => NFData (Event a) Source # NFData instance Methodsrnf :: Event a -> () # Forceable a => Forceable (Event a) Source # Forceable instance Methodsforce :: Event a -> Event a Source #

switch :: SF a (b, Event c) -> (c -> SF a b) -> SF a b Source #

Basic switch.

By default, the first signal function is applied.

Whenever the second value in the pair actually is an event, the value carried by the event is used to obtain a new signal function to be applied *at that time and at future times*.

Until that happens, the first value in the pair is produced in the output signal.

Important note: at the time of switching, the second signal function is applied immediately. If that second SF can also switch at time zero, then a double (nested) switch might take place. If the second SF refers to the first one, the switch might take place infinitely many times and never be resolved.

Remember: The continuation is evaluated strictly at the time of switching!

## Time (NOTE: integral 1 over time. Not really necessary.)

type Time = Double Source #

Time is used both for time intervals (duration), and time w.r.t. some agreed reference point in time.

Alternative name for localTime.