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?