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
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:
AddHandlerhas changed, it now expects a way to unregister event handlers. This is used for the
pausefunction and prepares for a distant future with dynamic event switching.
filterEto avoid the clash with the Prelude. Was that a good idea?