
On Tue, Jan 30, 2007 at 10:22:58AM +0000, Duncan Coutts wrote:
Ross, you need to make a monoid transformer library (at least reader and state) and campaign for ++ to be redefined as mappend, then everyone will want to use it since it'll be so neat and convenient! :-)
Reader is already there. The best way to do state, I think, is to generalize the Endo type from (->) to any arrow and then use Kleisli (Writer m). Monoids could certainly do with a more convenient syntax, but there's no hope of redefining ++. Another problem is that we have Monoid, Alternative, MonadPlus and ArrowPlus all with similar operations. If only we could write instance (Monad m, forall a. Monoid (m a)) => MonadPlus m This was proposed in http://research.microsoft.com/Users/simonpj/Papers/derive.htm but nothing seems to have come of it.