timeless-1.0.1.2: An Arrow based Functional Reactive Programming library

Copyright(c) Ertugrul Soeylemez 2013
Rongcui Dong 2015
LicenseBSD3
MaintainerRongcui Dong <karl_1702@188.com>
Safe HaskellSafe
LanguageHaskell2010

FRP.Timeless.Internal.Signal

Contents

Description

 

Synopsis

Signal

data Signal m a b where Source #

Constructors

SId :: Signal m a a 
SConst :: Maybe b -> Signal m a b 
SArr :: (Maybe a -> Maybe b) -> Signal m a b 
SPure :: (Maybe a -> (Maybe b, Signal m a b)) -> Signal m a b 
SGen :: Monad m => (Maybe a -> m (Maybe b, Signal m a b)) -> Signal m a b 

Instances

Monad m => Arrow (Signal m) Source # 

Methods

arr :: (b -> c) -> Signal m b c #

first :: Signal m b c -> Signal m (b, d) (c, d) #

second :: Signal m b c -> Signal m (d, b) (d, c) #

(***) :: Signal m b c -> Signal m b' c' -> Signal m (b, b') (c, c') #

(&&&) :: Signal m b c -> Signal m b c' -> Signal m b (c, c') #

Monad m => ArrowChoice (Signal m) Source # 

Methods

left :: Signal m b c -> Signal m (Either b d) (Either c d) #

right :: Signal m b c -> Signal m (Either d b) (Either d c) #

(+++) :: Signal m b c -> Signal m b' c' -> Signal m (Either b b') (Either c c') #

(|||) :: Signal m b d -> Signal m c d -> Signal m (Either b c) d #

MonadFix m => ArrowLoop (Signal m) Source # 

Methods

loop :: Signal m (b, d) (c, d) -> Signal m b c #

Monad m => Category * (Signal m) Source # 

Methods

id :: cat a a #

(.) :: cat b c -> cat a b -> cat a c #

Monad m => Functor (Signal m a) Source # 

Methods

fmap :: (a -> b) -> Signal m a a -> Signal m a b #

(<$) :: a -> Signal m a b -> Signal m a a #

Monad m => Applicative (Signal m a) Source # 

Methods

pure :: a -> Signal m a a #

(<*>) :: Signal m a (a -> b) -> Signal m a a -> Signal m a b #

(*>) :: Signal m a a -> Signal m a b -> Signal m a b #

(<*) :: Signal m a a -> Signal m a b -> Signal m a a #

stepSignal Source #

Arguments

:: Monad m 
=> Signal m a b

Signal to be stepped

-> Maybe a

Input | Stateful output

-> m (Maybe b, Signal m a b) 

Steps a signal in certain time step

Utilities

lstrict :: (a, b) -> (a, b) Source #

Left strict tuple