Ryan Ingram wrote:
Apfelmus, I hope you don't abandon your efforts, at least for the selfish
reason that I enjoy reading your blog entries about trying to implement it!

:D My reasoning was that a temporary demand-driven implementation would allow me to release the library sooner; I want people to start using the library and experiment with FRP. I can always add the push-driven implementation later.

However, even in a demand-driven implementation, there is one optimization that I would like make: when there are multiple external events, say e1 and e2, the network splits into subnetworks that react only to one of the inputs. For instance, your example would split into two graphs

  e1               e2
  |  \             |  \
  e3  e4     and   e3  e4
  |   |            |   |
  e5  e5           e5  e5

that are independent of each other. Unlike successful filters, these subnetworks are known *statically* and it's worth splitting them out.

That said, it appears to me that this optimization is quite tricky even in a demand-driven setting! I can as well stick to the push-driven implementation I have already started.


I was looking at your last entry and trying to understand if/how you solve
the order-dependency problem for events.  In particular:

source events e1, e2

e3 = e1 union e2
e4 = e2 union e1

e5 = e3 union e4

The graph from your description would look something like


e1      e2
| \-A  / \   A-\
e3    e3 e4    e4
|     |   |    |
e5    e5 e5    e5

When I was looking at the FRP problem before, it felt a lot like the
'adaptive' problem, so I was looking at Umut Acar's papers and trying to
build something along those lines.  But perhaps your API is simple enough
that you don't need that degree of complexity.

Thanks, I'll have a look at his work. It's really very similar to some kind of adaptive computation. What currently irks me about my push-driven implementation is that it is ad-hoc. I would really like to start from a demand-driven implementation and systematically transform it into a push-driven one.


Best regards,
Heinrich Apfelmus

--
http://apfelmus.nfshost.com


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to