Hi, it seems to be much too late after all the discussion but among
the alternatives was
> 3. Make tuples special, so that g would be in Monad, but
> if we had a user-defined single-constructor type instead
> then it would be in MonadZero
about which was said
> (3) seems dreadful.
I'm not so sure. If we don't call it make them special, but let them
be unlifted products (and hence irrefutable patterns), how would that
sound? Why are they lifted, anyway? If it's only so that we can say
tuples are nothing but syntactic sugar for something one might
otherwise declare as a data definition oneself, I'd be happy to give
that away. And I never liked the lifting of single-constructor types,
so I don't use them. After all, there is still newtype.
I also like (5) [status quo].
I don't feel happy with the proposed changings in the definition of
Monad, but I can't give good (let alone new) reasons for that.
Christian Sievers