Hi Peter,<br><br>> First of all Conal, I find all of your work amazingly cool. Do you have fan list? ;-)<br><br>:)<br><br>> Conal Elliott wrote:<br>> > Moreover, functional programming makes it easy to have much more state than imperative programming, namely state over *continuous* time. The temporally discrete time imposed by the imperative model is pretty puny in comparison. Continuous (or "resolution-independent") time has the same advantages as continuous space: resource-adaptive, scalable, transformable.
<br>> Yes, that's true, but isn't that also the problem with FRP? I mean, most of the papers I'm reading about (A)FRP indicate that no matter how nice it is to have the continuous time model, to get fine grained control over execution times and resources, one needs to fall back to the discrete delta-time approach?
<br><br>I haven't found that to be the case. I'd like to understand what specific implementation issues seem to conflict with continuous time. Can anyone help me out?<br><br>> And you still need to think about where you have to introduce delays to avoid infinite loops? I might be wrong, since I don't understand everything in these papers yet ;-)
<br><br>There were two places in Fran where timing was a bit delicate to get termination. I made sure that reactive behaviors don't change at the moment of the event occurrence, but rather immediately after it. You could call it an "infinitessimal delay". There was no delta>0. The other is very similar: ordinary differential equations (expressed recursively, using integration). Again, there was no time delta in the semantics.
<br><br>I also got the impression that some of the folks at Yale thought it necessary to add in some kind of (non-infinitessimal) delay, related to termination, but I don't know why. Maybe Henrik will comment.<br><br>
> About continuous time; it is in fact, not really continuous is it, since floats are used to approximate time. So the longer your program runs, the less accurate an absolute time value will become no? Okay, if you use 64-bit floats, you will have to let is run a very long time :-)
<br><br>Sure. And yes 64 bits help. And we could certainly use a bigfloat representation to get really continuous time (and space).<br><br>> Since nobody replied yet on my question about the future of (A)FRP, maybe I can ask it again here? What is the future for FRP? Are other approaches better suitable for reactive applications?
<br><br>I've been itching to get back into (A)FRP to address some of these issues of continuous time, as well as modular interaction. Also toward making a much more efficient implementation, based mainly on data-driven evaluation. I've made some preliminary experiments, described at
<a href="http://haskell.org/haskellwiki/DataDriven">http://haskell.org/haskellwiki/DataDriven</a> , used in Phooey, GuiTV, and Eros.<br><br>Cheers, - Conal<br><br>