Ordering of events in Reactive / Phooey

From "Simply efficient functional reactivity" paper I can see that the unamb function should only be called when both arguments will give the same result (not necessarily at the same time). So there should be no
Hi If an end-user of a Reactive-based GUI (e.g. Phooey) triggers two events, am I sure that event one will be processed before event two ? (I am assuming that event one occurs before event two) The reason behind this question is: 1) that Reactive uses threads when two event sources are merged - the unambiguous choice function (Unamb.unamb). 2) the scheduler decides when a thread becomes active. So even if an end-user has triggered some event, the scheduler may decide to wait running a thread and thus the processing of the event. problems. And as I understand it, unamb is used to compare min-bound-times with respect to events. Thus the two events will be processed in the right order - I guess. However, this must also mean that events-sources are tagged with min-bound-times - e.g. all event-sources in a GUI, could get the min-bound-time of the latest occurring event. However, looking at the sources for Phooey I cannot see this tagging happening. What am I missing ? When looking at the Phooey and the Reactive code, I could not find the mkEvent function in newer Reactive releases. I therefore also looked at version 0.5, which did not seem to have these bounded time values. This may be the cause of some of my confusion. Greetings, Mads Lindstrøm

On 23 Mar 2009, at 13:55, Mads Lindstrøm wrote:
Hi
If an end-user of a Reactive-based GUI (e.g. Phooey) triggers two events, am I sure that event one will be processed before event two ? (I am assuming that event one occurs before event two)
The reason behind this question is:
1) that Reactive uses threads when two event sources are merged - the unambiguous choice function (Unamb.unamb).
Yes, if you check the source here, you'll see that as soon as one event is triggered, it checks whether the other event has occured, then returns the one with the earlier time stamp if both have occured.
When looking at the Phooey and the Reactive code, I could not find the mkEvent function in newer Reactive releases. I therefore also looked at version 0.5, which did not seem to have these bounded time values. This may be the cause of some of my confusion.
Indeed, early versions did not use bounds, the particular bit of code you need to look at in newer versions is TMVar IIRC, but don't quote me on that. Bob
participants (2)
-
Mads Lindstrøm
-
Thomas Davie