_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