[reactive] Ordering of events in Reactive / Phooey
mads_lindstroem at yahoo.dk
Mon Mar 23 08:55:02 EDT 2009
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.
>From "Simply efﬁcient 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
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.
More information about the Reactive