"zipping" two streams in the IO monad

Nick Name nick.name@inwind.it
Thu, 19 Sep 2002 22:06:59 +0200

How could I "zip" two possibily infinite streams obtained by IO
operations, for example to return the infinite list of pairs of values
read both from channel a and from channel b with getChanContents?

In general, how does one implement a function like "getChanContents"
wich returns an infinite list? Tell me just some pointer to information
of course, I don't want an entire functional programming lesson :)