[Haskell-cafe] [reactive] A pong and integrate

Patai Gergely patai_gergely at fastmail.fm
Mon May 24 07:22:49 EDT 2010


> One problem with Elerea experimental branch besides the update time
> control:
> the memo function. I can't understand when I have to call it and when I
> don't.
Technically, you never have to. However, if you have a signal derived
from others by pure application (i.e. fmap or <*>), keep in mind that
its output will be recalculated as many times as you request it. The
memo element can be used as a proxy to prevent that. E.g. if you have z
= liftA2 f x y, and you request z n times, f will also be called n
times. But if you have z <- memo (liftA2 f x y) instead, then the
calculation will only happen once. If Elerea wasn't an EDSL, these memo
elements could be inserted automatically, but now I have no means to
tell how many times a certain signal is referred to, so the burden is on
the programmer.

The old version doesn't have this inconvenience, because it memoises all
the applicative nodes too. Since most of them are only referred to once,
this is adds a lot of unnecessary overhead.

> Just to know, have you been told of a language dedicated to reactive
> programming (even experimental)? I mean, not an embedded language just
> like Yampa is.
Those that Peter mentioned are good examples, and there is also Lustre.
But you have to be aware that Elerea, Yampa, Lucid Synchrone and Lustre
are all very similar in their foundations.

Gergely

-- 
http://www.fastmail.fm - The professional email service



More information about the Haskell-Cafe mailing list