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)
[Skip to Readme]
Modules
[Index] [Quick Jump]
- FRP
- FRP.Rhine
- FRP.Rhine.ClSF
- FRP.Rhine.Clock
- FRP.Rhine.Reactimation
- FRP.Rhine.ResamplingBuffer
- FRP.Rhine.SN
- FRP.Rhine.Schedule
- FRP.Rhine.Type
- FRP.Rhine
Flags
Manual Flags
Name | Description | Default |
---|---|---|
dev | Enable warnings as errors. Active on ci. | Disabled |
core | Dump GHC core files for debugging. | Disabled |
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
Downloads
- rhine-1.5.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Versions [RSS] | 0.1.0.0, 0.1.1.0, 0.2.0.0, 0.3.0.0, 0.4.0.0, 0.4.0.1, 0.4.0.2, 0.4.0.3, 0.4.0.4, 0.5.0.0, 0.5.0.1, 0.5.1.0, 0.5.1.1, 0.6.0, 0.7.0, 0.7.1, 0.8.0.0, 0.8.0.1, 0.8.1, 0.8.1.1, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.4.0.1, 1.5 |
---|---|
Change log | ChangeLog.md |
Dependencies | automaton (>=1.5 && <1.6), base (>=4.16 && <4.21), containers (>=0.5), deepseq (>=1.4), foldable1-classes-compat (>=0.1 && <0.2), free (>=5.1), mmorph (>=1.2 && <1.3), monad-schedule (>=0.2 && <0.3), MonadRandom (>=0.5), mtl (>=2.2 && <2.4), profunctors (>=5.6 && <5.7), random (>=1.1), selective (>=0.7 && <0.8), simple-affine-space (>=0.2 && <0.3), sop-core (>=0.5 && <0.6), text (>=1.2 && <2.2), time (>=1.8), time-domain (>=0.1.0.2 && <0.2), transformers (>=0.5), vector-sized (>=1.4) [details] |
Tested with | ghc ==9.2.8, ghc ==9.4.7, ghc ==9.6.4, ghc ==9.8.2, ghc ==9.10.1 |
License | BSD-3-Clause |
Author | Manuel Bärenz |
Maintainer | maths@manuelbaerenz.de |
Category | FRP |
Source repo | head: git clone https://github.com/turion/rhine.git this: git clone https://github.com/turion/rhine.git(tag v1.5) |
Uploaded | by turion at 2024-11-12T19:29:44Z |
Distributions | LTSHaskell:1.5, NixOS:1.4.0.1 |
Reverse Dependencies | 3 direct, 0 indirect [details] |
Downloads | 8784 total (68 in the last 30 days) |
Rating | 2.0 (votes: 1) [estimated by Bayesian average] |
Your Rating | |
Status | Docs available [build log] Last success reported on 2024-11-12 [all 1 reports] |