reactive: Simple foundation for functional reactive programming

[ frp, reactivity ] [ Propose Tags ]

Reactive is a simple foundation for programming reactive systems functionally. Like Fran/FRP, it has a notions of (reactive) behaviors and events. Unlike most previous FRP implementations, Reactive has a hybrid demand/data-driven implementation, as described in the paper "Simply efficient functional reactivity",

Import FRP.Reactive for FRP client apps. To make an Reactive adapter for an imperative library, import FRP.Reactive.LegacyAdapters.

Please see the project wiki page:

© 2007-2008 by Conal Elliott; BSD3 license.

With contributions from: Robin Green, Thomas Davie, Luke Palmer, David Sankel, Jules Bean, Creighton Hogg, Chuan-kai Lin, and Richard Smith. Please let me know if I've forgotten to list you.

[Skip to Readme]
Versions [faq] 0.0, 0.2, 0.3, 0.5,, 0.8.3, 0.8.6, 0.8.8, 0.9.0, 0.9.1, 0.9.3, 0.9.4, 0.9.5, 0.9.6, 0.9.7, 0.9.8, 0.9.9, 0.9.10, 0.10.0, 0.10.1, 0.10.2, 0.10.3, 0.10.4, 0.10.5, 0.10.7, 0.11, 0.11.2, 0.11.3, 0.11.4, 0.11.5
Dependencies base, category-extras (>=0.53.5), checkers (>=0.1.3), old-time, QuickCheck, random, Stream, TypeCompose (>=0.6.3), unamb (>=0.1.5), vector-space (>=0.5) [details]
License BSD-3-Clause
Copyright (c) 2007-2008 by Conal Elliott
Author Conal Elliott
Category reactivity, FRP
Home page
Uploaded by ConalElliott at Thu May 21 23:43:16 UTC 2009
Distributions NixOS:0.11.5
Downloads 13257 total (302 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs not available [build log]
All reported builds failed as of 2017-01-01 [all 6 reports]


  • Data
    • Data.AddBounds
    • Data.Max
    • Data.Min
    • Data.PairMonad
  • FRP
    • FRP.Reactive
      • FRP.Reactive.Behavior
      • FRP.Reactive.Fun
      • FRP.Reactive.Future
      • FRP.Reactive.Improving
      • Internal
        • FRP.Reactive.Internal.Behavior
        • FRP.Reactive.Internal.Chan
        • FRP.Reactive.Internal.Clock
        • FRP.Reactive.Internal.Fun
        • FRP.Reactive.Internal.Future
        • FRP.Reactive.Internal.IVar
        • FRP.Reactive.Internal.Misc
        • FRP.Reactive.Internal.Reactive
        • FRP.Reactive.Internal.Serial
        • FRP.Reactive.Internal.TVal
        • FRP.Reactive.Internal.Timing
      • FRP.Reactive.LegacyAdapters
      • FRP.Reactive.Num
      • FRP.Reactive.PrimReactive
      • FRP.Reactive.Reactive
      • FRP.Reactive.VectorSpace


Maintainer's Corner

For package maintainers and hackage trustees

Readme for reactive-0.10.7

[back to package description]
_Reactive_ [1] is a simple foundation for programming reactive systems
functionally.  Like Fran/FRP, it has a notions of (reactive) behaviors and
events.  Like DataDriven [2], Reactive has a data-driven implementation.

The inspiration for Reactive was Mike Sperber's Lula [3] implementation of
FRP.  Mike used blocking threads, which I had never considered for FRP.
While playing with the idea, I realized that I could give a very elegant
and efficient solution to caching, which DataDriven doesn't do.  (For an
application "f <*> a" of a varying function to a varying argument, caching
remembers the latest function to apply to a new argument and the last
argument to which to apply a new function.)

The theory and implementation of Reactive are described in the paper "Simply
efficient functional reactivity" [4].

Note that cabal[5], version or greater is required for installation.

You can configure, build, and install all in the usual way with Cabal

  runhaskell Setup.lhs configure
  runhaskell Setup.lhs build
  runhaskell Setup.lhs install