reactive: Push-pull 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 a Reactive adapter for an imperative library, import FRP.Reactive.LegacyAdapters.

Please see the project wiki page:

© 2007-2008 by Conal Elliott; GNU AGPLv3 license (see COPYING).

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.2), old-time, QuickCheck (>=2), random, Stream (>=0.3.1), TypeCompose (>=0.6.3), unamb (>=0.1.5), vector-space (>=0.5) [details]
License LicenseRef-OtherLicense
Copyright (c) 2007-2008 by Conal Elliott
Author Conal Elliott
Category reactivity, FRP
Home page
Bug tracker
Uploaded by ConalElliott at 2009-05-29T23:50:12Z
Distributions NixOS:0.11.5
Downloads 18192 total (36 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs uploaded by user
Build status unknown [no reports yet]




Maintainer's Corner

For package maintainers and hackage trustees

Readme for reactive-0.11

[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