In local.glasgow-haskell-users, you wrote: > That makes isEmptyChan essentially useless. Either it should be > removed, or the implementation of Chan needs to be elaborated to support > isEmptyChan.
I have a new implementation here which should track the number of elements in a channel, taking also into account unGetChan & dupChan. It seems to work, but lacks thorough testing. In any case, as it bloats the data structure data Chan a = Chan (MVar ([MVar Integer],Stream a)) (MVar ([MVar Integer],Stream a)) (MVar Integer) type Stream a = MVar ([MVar Integer],ChItem a) it should probably be something like Control.Concurrent.CountChan. http://www.foldr.org/~stolz/Chan2.hs Without documentation it's quite useless, I'll leave it over the weekend... If nobody comes up with a more sensible solution, I'd say remove isEmptyChan from the regular module. [although I consider mapM_ (uncurry putMVar) (zip counts (map (+1) vs)) rather neat :)] -- http://www-i2.informatik.rwth-aachen.de/stolz/ *** PGP *** S/MIME rage against the finite state machine _______________________________________________ Glasgow-haskell-users mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users