I have released version 0.3.0.0 of my reactive-banana library on hackage.
The main improvement in this version is the interaction with existing event-based frameworks; the core FRP model and semantics remain unchanged.
Previously, only a single event network could be run at a time and the mysteriously named Prepare
monad was used to set it up. Now, however, event networks are first-class values: several different networks may run simultaneously and you can pause
and run
them at any time. You still have to use a monad to create them, the NetworkDescription
monad, but you now have a function
compile :: NetworkDescription () -> IO EventNetwork
that turns network descriptions into something tangible. Of course, the NetworkDescription
is just the old Prepare
monad, but I think the new nomenclature and behavior is much easier to grasp and understand. (Many thanks to Juergen Nicklisch-Franken for discussions leading to these changes.)
Other changes include:
AddHandler
has changed, it now expects a way to unregister event handlers. This is used for the pause
function and prepares for a distant future with dynamic event switching.filter
function to filterE
to avoid the clash with the Prelude. Was that a good idea?