
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

On Sun, Jul 10, 2016 at 08:27:40PM +0000, Petr Pudlák wrote:
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?
They are all equivalent to `Reader a`, for some choice of `a`.
participants (2)
-
Petr Pudlák
-
Tom Ellis