Hi,

we've been debating the usefulness of Monad instances for Stream [2] or homogeneous tuples (fixed-length vectors). The Applicative implementation for them is simply zipping, very useful indeed. The "join" of their Monad instances takes the diagonal of a 2-dimensional plane (finite for tuples, infinite for Stream). (See also [1].)

The question is, are such monad instances used in the wild? Are they actually useful or interesting for anything?

[1] https://mail.haskell.org/pipermail/haskell-cafe/2009-April/thread.html#59079
[2] https://hackage.haskell.org/package/Stream-0.4.7.2/docs/Data-Stream.html

Thanks
Petr