
On Tue, 11 Mar 2003 13:43:32 +0100
George Russell
I think devising something that subsumes everything may be tricky.
Oh, before somebody misunderstoods me badly, and before moving this discussion to an appropriate place, two things: - I would like to subsume just some aspects of things I said. For examples, trying to subsume MVars as a general synchronization structure is far away from the streams, but MVars are also used as shared thread-safe variables, and this is the aspect I wish to model - Of course, I would like a library with necessary types, and not an unique type to subsume them all; this is mainly to avoid things like a read-only variable wich returns "error" on write: there should be a type for readable things and a type for writable things!
For example, will this stream library also subsume CML style events (as implemented by me as part of HTk), which allow you to wait on multiple events and return when any one of them occurs?
Well, this is an example wich requires concurrency. "Merge" of events will be available only on preemptive multithreaded implementation, unless I am wrong and there is an alternative way (like a "select" operator).
Will it be possible, for example, to "fold" a stream, taking an existing stream and adding a bit of state to it? Will it be possible to block selected elements of a stream?
I applaud the idea of devising a general stream library. But I would suggest starting with devising an interface that is extensible as possible, so all such features can be added later on, as necesary.
Yes, and this is way I say "let's work together". You have to point out your issues, everybody else their. We 'll see what stream semantics we are interested in and what are too complex or too rarely used, and decide what's "inside" the library and what's "outside", or else the work could have been done here in the GUI ml. Let's put a deadline, say two months to make the specification of an extensible kernel and to write a correct implementation - if we don't have anything till that deadline, we'll surrender :) Also because I have to ask for my thesis, and after that will not have so much time. Vincenzo