rhine-1.4: rhine.cabal
cabal-version: 2.2
name: rhine
version: 1.4
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
data-files:
bench/pg100.txt
test/assets/*.txt
tested-with:
ghc ==9.2.8
ghc ==9.4.7
ghc ==9.6.4
ghc ==9.8.2
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.4
common opts
build-depends:
automaton ^>=1.4,
base >=4.14 && <4.20,
monad-schedule ^>=0.2,
mtl >=2.2 && <2.4,
selective ^>=0.7,
text >=1.2 && <2.2,
time >=1.8,
transformers >=0.5,
vector-sized >=1.4,
if flag(dev)
ghc-options: -Werror
ghc-options:
-W
-Wno-unticked-promoted-constructors
default-extensions:
Arrows
DataKinds
FlexibleContexts
FlexibleInstances
ImportQualifiedPost
MultiParamTypeClasses
NamedFieldPuns
NoStarIsType
TupleSections
TypeApplications
TypeFamilies
TypeOperators
-- Base language which the package is written in.
default-language: Haskell2010
common test-deps
build-depends:
QuickCheck ^>=2.14,
tasty >=1.4 && <1.6,
tasty-hunit ^>=0.10,
tasty-quickcheck ^>=0.10,
common bench-deps
build-depends:
criterion ^>=1.6
library
import: opts
exposed-modules:
FRP.Rhine
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.Clock
FRP.Rhine.Clock.Except
FRP.Rhine.Clock.FixedStep
FRP.Rhine.Clock.Periodic
FRP.Rhine.Clock.Proxy
FRP.Rhine.Clock.Realtime
FRP.Rhine.Clock.Realtime.Audio
FRP.Rhine.Clock.Realtime.Busy
FRP.Rhine.Clock.Realtime.Event
FRP.Rhine.Clock.Realtime.Millisecond
FRP.Rhine.Clock.Realtime.Never
FRP.Rhine.Clock.Realtime.Stdin
FRP.Rhine.Clock.Select
FRP.Rhine.Clock.Trivial
FRP.Rhine.Clock.Unschedule
FRP.Rhine.Clock.Util
FRP.Rhine.Reactimation
FRP.Rhine.Reactimation.ClockErasure
FRP.Rhine.Reactimation.Combinators
FRP.Rhine.ResamplingBuffer
FRP.Rhine.ResamplingBuffer.ClSF
FRP.Rhine.ResamplingBuffer.Collect
FRP.Rhine.ResamplingBuffer.FIFO
FRP.Rhine.ResamplingBuffer.Interpolation
FRP.Rhine.ResamplingBuffer.KeepLast
FRP.Rhine.ResamplingBuffer.LIFO
FRP.Rhine.ResamplingBuffer.Timeless
FRP.Rhine.ResamplingBuffer.Util
FRP.Rhine.SN
FRP.Rhine.SN.Combinators
FRP.Rhine.Schedule
FRP.Rhine.Type
other-modules:
FRP.Rhine.ClSF.Except.Util
FRP.Rhine.ClSF.Random.Util
-- LANGUAGE extensions used by modules in this package.
-- other-extensions:
-- Other library packages from which modules are imported.
build-depends:
MonadRandom >=0.5,
containers >=0.5,
deepseq >=1.4,
free >=5.1,
mmorph ^>=1.2,
profunctors ^>=5.6,
random >=1.1,
simple-affine-space ^>=0.2,
sop-core ^>=0.5,
text >=1.2 && <2.2,
time >=1.8,
time-domain ^>=0.1.0.2,
transformers >=0.5,
-- Directories containing source files.
hs-source-dirs: src
test-suite test
import: opts, test-deps
hs-source-dirs: test
type: exitcode-stdio-1.0
main-is: Main.hs
other-modules:
Clock
Clock.Except
Clock.FixedStep
Clock.Millisecond
Except
Paths_rhine
Schedule
Util
autogen-modules: Paths_rhine
build-depends:
rhine
flag dev
description: Enable warnings as errors. Active on ci.
default: False
manual: True
benchmark benchmark
import: opts, bench-deps
type: exitcode-stdio-1.0
hs-source-dirs: bench
autogen-modules: Paths_rhine
other-modules:
Paths_rhine
Sum
WordCount
build-depends:
rhine
main-is: Main.hs
ghc-options:
-Wall
if flag(core)
ghc-options:
-fforce-recomp
-ddump-to-file
-ddump-simpl
-dsuppress-all
-dno-suppress-type-signatures
-dno-suppress-type-applications
test-suite benchmark-test
import: opts, bench-deps, test-deps
type: exitcode-stdio-1.0
hs-source-dirs: bench
autogen-modules: Paths_rhine
other-modules:
Paths_rhine
Sum
WordCount
build-depends:
rhine
main-is: Test.hs
flag core
description: Dump GHC core files for debugging.
default: False
manual: True