[Haskell-cafe] Applicative Monoid instance

Will Yager will.yager at gmail.com
Mon Sep 5 19:28:21 UTC 2016

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. 


> On Sep 5, 2016, at 13:54, Brian Hurt <bhurt at spnz.org> 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.

More information about the Haskell-Cafe mailing list