> Having spent several months on this exact problem, I'll say that I
> consider it pretty unlikely.
I wouldn't be very surprised if that was the case.
> A clever data structure might give you logarithmic or even amortized
> constant time access in sequential cases, but you probably will not have
> good garbage collection properties (all data will remain for all time).
I guess cleverness should be concentrated on aging streams properly. But
I do see how the ability to extract the diagonal conflicts with such
efforts.
> Stick with Applicative for this type of thing. Monad will drive you
> insane :-)
In fact, even applicative is far from trivial. ;) For instance, I still
can't see how I could implement the <*> operator with stateless streams
that don't need to keep track of their local time (needed when combining
them with stateful streams, that is).
Gergely
--
http://www.fastmail.fm - Access all of your messages and folders
wherever you are