
Probably something to do with not making overlapping instances. Not sure. Easiest/best approach is probably to make a newtype wrapper around IO or IO (). Then you can define the monoid instance you want. Will
On Sep 5, 2016, at 13:54, Brian Hurt
wrote: This may be a stupid question, but I'm wondering why the following instance isn't in prelude:
instance (Applicative m, Monoid a) => Monoid (m a) where mempty = pure mempty mappend a b = mappend <$> a <*> b
?
I ask, because being able to use a WriterT (IO ()) STM a to debug complex STM expressions would be really nice. But it depends upon IO () being a monoid.
Brian
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.