rhine-1.2: rhine.cabal
cabal-version: 2.2
name: rhine
version: 1.2
synopsis: Functional Reactive Programming with type-level clocks
description:
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)@
license: BSD-3-Clause
license-file: LICENSE
author: Manuel Bärenz
maintainer: maths@manuelbaerenz.de
category: FRP
build-type: Simple
extra-source-files: ChangeLog.md
extra-doc-files: README.md
tested-with:
GHC == 9.0.2
GHC == 9.2.8
GHC == 9.4.7
source-repository head
type: git
location: https://github.com/turion/rhine.git
source-repository this
type: git
location: https://github.com/turion/rhine.git
tag: v1.0
common opts
build-depends:
, base >= 4.14 && < 4.18
, vector-sized >= 1.4
if flag(dev)
ghc-options: -Werror
ghc-options: -W
-Wno-unticked-promoted-constructors
default-extensions:
DataKinds
, FlexibleContexts
, FlexibleInstances
, MultiParamTypeClasses
, NamedFieldPuns
, NoStarIsType
, TupleSections
, TypeApplications
, TypeFamilies
, TypeOperators
-- Base language which the package is written in.
default-language: Haskell2010
library
import: opts
exposed-modules:
FRP.Rhine
FRP.Rhine.Clock
FRP.Rhine.Clock.FixedStep
FRP.Rhine.Clock.Periodic
FRP.Rhine.Clock.Proxy
FRP.Rhine.Clock.Realtime.Audio
FRP.Rhine.Clock.Realtime.Busy
FRP.Rhine.Clock.Realtime.Event
FRP.Rhine.Clock.Realtime.Millisecond
FRP.Rhine.Clock.Realtime.Stdin
FRP.Rhine.Clock.Select
FRP.Rhine.Clock.Unschedule
FRP.Rhine.Clock.Util
FRP.Rhine.ClSF
FRP.Rhine.ClSF.Core
FRP.Rhine.ClSF.Except
FRP.Rhine.ClSF.Random
FRP.Rhine.ClSF.Reader
FRP.Rhine.ClSF.Upsample
FRP.Rhine.ClSF.Util
FRP.Rhine.Reactimation
FRP.Rhine.Reactimation.ClockErasure
FRP.Rhine.Reactimation.Combinators
FRP.Rhine.ResamplingBuffer
FRP.Rhine.ResamplingBuffer.Collect
FRP.Rhine.ResamplingBuffer.FIFO
FRP.Rhine.ResamplingBuffer.Interpolation
FRP.Rhine.ResamplingBuffer.KeepLast
FRP.Rhine.ResamplingBuffer.LIFO
FRP.Rhine.ResamplingBuffer.MSF
FRP.Rhine.ResamplingBuffer.Timeless
FRP.Rhine.ResamplingBuffer.Util
FRP.Rhine.Schedule
FRP.Rhine.SN
FRP.Rhine.SN.Combinators
FRP.Rhine.Type
other-modules:
FRP.Rhine.ClSF.Random.Util
FRP.Rhine.ClSF.Except.Util
-- LANGUAGE extensions used by modules in this package.
-- other-extensions:
-- Other library packages from which modules are imported.
build-depends:
, dunai ^>= 0.11
, transformers >= 0.5
, time >= 1.8
, free >= 5.1
, containers >= 0.5
, text >= 1.2 && < 2.1
, deepseq >= 1.4
, random >= 1.1
, MonadRandom >= 0.5
, simple-affine-space ^>= 0.2
, time-domain ^>= 0.1.0.2
, monad-schedule ^>= 0.1.2
-- Directories containing source files.
hs-source-dirs: src
test-suite test
import: opts
hs-source-dirs: test
type: exitcode-stdio-1.0
main-is: Main.hs
other-modules:
Clock
Clock.FixedStep
Clock.Millisecond
Schedule
Util
build-depends:
, rhine
, monad-schedule
, tasty ^>= 1.4
, tasty-hunit ^>= 0.10
flag dev
description: Enable warnings as errors. Active on ci.
default: False
manual: True