I am not suggesting that Reactives replace events, since they don't. Rather
than having listeners that you have to add to structure that would throw
events, you simply use a Reactive on that independent data, which would
then emit events each time its value changed, in turn re-evaluating all data
dependent on the variable contained in the Reactive. Each reactive has
an event stream, as explained in the paper.
Say the dimensions of the outer component are dependent upon its inner
components (probably more of a given). If whatever data model you were
using needed to redraw the component when the size changed, and the size was
a Signal, say inner.size, and the outer was also Signal, this.size,
and the body was defined as { someConstant + otherVaribles + inner.size() },
the value would be re-evaluated when inner.size threw an event to its
stream of its value changing, thus this.size() would also throw an event.
The redraw method could be in a Reactive.loop that continuously calls
next( this.size.changes ), the event stream of this.size. Thus, the visual
component would always reflect the most current size data.
This is just a brief example of one style of implementing Reactives vs
listeners. My thoughts were just getting rid of adding listeners to objects,
and being able to build dependency hierarchies that always hold the
correct values when based on time-varying variables.
It believe Reactives would also make user input easier and more
coherent to manage and debug, in light of the Adobe example at
the beginning of the paper.