package:rhine
Functional Reactive Programming with type-level clocks
Rhine is a library for synchronous and asynchronous Functional
Reactive Programming (FRP). It separates the aspects of clocking,
scheduling and resampling from each other, and ensures clock-safety on
the type level. Signal processing units can be annotated by clocks,
which hold the information when data will be input, processed and
output. Different components of the signal network will become active
at different times, or work at different rates. To schedule the
components and allow them to communicate, several standard scheduling
and resampling solutions are implemented. Own schedules and resampling
buffers can be implemented in a reusable fashion. A (synchronous)
program outputting "Hello World!" every tenth of a second looks like
this: flow $ constMCl (putStrLn "Hello World!") @@ (waitClock ::
Millisecond 100)