[Haskell-cafe] reactive? was Re: Incremental trasnformations (not Haskell topic)

Ryan Ingram ryani.spam at gmail.com
Mon Dec 29 04:28:19 EST 2008


2008/12/28 Luke Palmer <lrpalmer at gmail.com>:
> Adaptive programming is sortof the opposite of reactive programming, the way
> I see it.  Adaptive is imperative (that's the best word I have for it), i.e.
> you have a bunch of variables and your code decides which one to change.
> Whereas reactive programming, at the very heart (i.e. I would expect every
> reactive semantics to obey this), is declarative.  That is, the way
> something behaves depends only on where it was defined, and not at all on
> how it is used.

I'm not sure I agree with this analysis; Reactive can be implemented
on top of Adaptive, and vice versa.

Yes, adaptive sort-of about mutation, but if you take a time step as
"some input variables updated", you can easily see how a Reactive
event stream implements an adaptive computation.  Similarily, Conal's
implementation of Reactive is mostly about how futures interact; it's
easy to see how futures can be implemented as Adaptive objects on top
of input sources showing the current time and the other inputs to the
system.

In fact I think if you look at Magnus Carlsson's Haskell Adaptive
package, I think you'll find that there isn't really much mention of
mutation at all, except at the point of "update the inputs and tell me
what output I get".  This is much the same as Reactive where some
underlying system is updating the inputs (mouse position, keyboard
events, etc.) and giving you the new output.

  -- ryan


More information about the Haskell-Cafe mailing list