Push-pull functional reactive programming

Latest on Hackage:0.11.5

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow to host generated Haddocks.

LicenseRef-OtherLicense licensed by Conal Elliott
Maintained by

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 "Push-pull functional reactive programming",

This version of Reactive has some serious bugs that show up particularly with some uses of the Event monad. Some problems have been due to bugs in the GHC run-time support for concurrency. I do not know whether the remaining problems in Reactive are still more subtle RTS issues, or some subtle laziness bugs in Reactive. Help probing the remaining difficulties is most welcome.

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-2009 by Conal Elliott; GNU AGPLv3 license (see COPYING). I am not thrilled with GPL, and I doubt I'll stay with it for long. If you would like different terms, please talk to me.

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.

comments powered byDisqus