rhine-0.8.0.0: Functional Reactive Programming with type-level clocks
Safe HaskellNone
LanguageHaskell2010

FRP.Rhine.Type

Description

The type of a complete Rhine program: A signal network together with a matching clock value.

Synopsis

Documentation

data Rhine m cl a b Source #

A Rhine consists of a SN together with a clock of matching type cl.

It is a reactive program, possibly with open inputs and outputs. If the input and output types a and b are both (), that is, the Rhine is "closed", then it is a standalone reactive program that can be run with the function flow.

Otherwise, one can start the clock and the signal network jointly as a monadic stream function, using eraseClock.

Constructors

Rhine 

Fields

Instances

Instances details
GetClockProxy cl => ToClockProxy (Rhine m cl a b) Source # 
Instance details

Defined in FRP.Rhine.Type

Associated Types

type Cl (Rhine m cl a b) Source #

Methods

toClockProxy :: Rhine m cl a b -> ClockProxy (Cl (Rhine m cl a b)) Source #

type Cl (Rhine m cl a b) Source # 
Instance details

Defined in FRP.Rhine.Type

type Cl (Rhine m cl a b) = cl

eraseClock :: (Monad m, Clock m cl, GetClockProxy cl) => Rhine m cl a b -> m (MSF m a (Maybe b)) Source #

Start the clock and the signal network, effectively hiding the clock type from the outside.

Since the caller will not know when the clock In cl ticks, the input a has to be given at all times, even those when it doesn't tick.