rhine

Functional Reactive Programming with type-level clocks

LTS Haskell 24.28:1.5@rev:1
Stackage Nightly 2026-01-18:1.6
Latest on Hackage:1.6

See all snapshots rhine appears in

BSD-3-Clause licensed by Manuel Bärenz
Maintained by [email protected]
This version can be pinned in stack with:rhine-1.6@sha256:005b978e530fe8c9f21b157606b5da363ddcb42a451f9c3d02b19f1ed373e16e,5506

Module documentation for 1.6

  • FRP
    • 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.SN.Type
      • FRP.Rhine.Schedule
      • FRP.Rhine.Type

README


This is the main library. For details, visit https://github.com/turion/rhine.

Changes

Revision history for rhine

Upcoming

1.6

  • Support GHC 9.12
  • Replace ‘SN’ GADT definition by newtype. Thanks to András Kovács for the suggestion.

1.5

  • Added forever utility for recursion in ClSFExcept
  • Support GHC 9.10

1.4

  • Add Profunctor instance for ResamplingBuffer
  • Fix imports of FRP.Rhine prelude
  • Add UTCClock and WaitUTCClock, corresponding refactorings
  • Remove unreliable downsampleMillisecond ResamplingBuffer

1.3

  • Dropped dunai dependency in favour of state automata. See the versions readme for details.
  • Moved the monad argument m in ClSFExcept: It is now ClSFExcept cl a b m e instead of ClSFExcept m cl a b e. The advantage is that now the type is an instance of MonadTrans and MFunctor. Analogous changes have been made to BehaviourFExcept.
  • Support GHC 9.6 and 9.8

1.2.1

  • Added FRP.Rhine.Clock.Realtime.Never (clock that never ticks)
  • Changed Busy clock effect to MonadIO

1.2

  • Changed Stdin clock Tag type to Text

1.1

  • dunai-0.11 compatibility

1.0

0.9

  • dunai-0.9 compatibility

0.8.1.1

  • Support for GHC 9.4.4

0.8.1

  • Support for GHC 9.2.4
  • Added FirstResampling and Feedback constructors to SN
  • Added rhine-terminal

0.8.0.0

  • Documentation improvements
  • Support for GHC 9.0.2
  • Updated to dunai-0.8
  • Added functions to pre-/post-compose SNs and Rhines with ClSFs
  • Added flake & stack support on CI. Thank you, Miguel Negrão and Jun Matsushita!

0.7.0

  • Replaced old reactimation mechanism by clock erasure
  • Dropped GHC support for < 8.4
  • Reworked gloss backends. There are now two pure backends and an IO backend.
  • Relaxed all upper version bounds

0.6.0

  • Synced with dunai version numbers
  • Supported GHC 8.8.3

0.5.1.0

  • Synced with dunai version numbers
  • Supported GHC 8.6
  • Added support for randomness with RandT in ClSFs

0.5.0.0

  • Deprecated GHC 7.*
  • Big module reorganisation:
  • Refactored some fixed step clocks
  • Added interpolation buffers

Note that this is the first release that is not in sync with dunai’s version numbers. rhine-0.5 depends on dunai-0.4.

0.4.0.0 – 2017.12.04

  • Documentation typos fixed
  • Added ChangeLog.md

0.3.0.0

  • Version bump
  • Documentation typos fixed (Thanks to Gabor Greif)

0.2.0.0

  • Travis CI support
  • Removed several utilities that are now in dunai
  • Extended averaging functions

0.1.1.0

  • Added FRP.Rhine.Clock.Realtime.Stdin (console keyboard event clock)
  • Added FRP.Rhine.Clock.Select (event selection clock)
  • Added FRP.Rhine.ClSF.Except (synchronous exception handling)

0.1.0.0

  • Initial version