package scalaz trait ZipStream[+A] { val value: Stream[A] } trait ZipStreams { def zip[A](s: Stream[A]): ZipStream[A] = new ZipStream[A] { val value = s } def emptyZipStream : ZipStream[Nothing] = zip(Stream.Empty) implicit def ZipStreamFrom[A](z: ZipStream[A]): Stream[A] = z.value }