<p dir="ltr">I would suggest that the coerce-based instances be stolen from Data.Identity.</p>
<div class="gmail_quote">On Feb 21, 2015 10:34 AM, "Oleg Grenrus" <<a href="mailto:oleg.grenrus@iki.fi">oleg.grenrus@iki.fi</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I propose to add Functor, Applicative, Monad, Foldable, and Traversable and maybe even MonadFix instances to wrapper newtypes in the Data.Monoid module.<br>
The same way as in the semigroups package, e.g. <a href="https://hackage.haskell.org/package/semigroups-0.16.1/docs/Data-Semigroup.html#t:Min" target="_blank">https://hackage.haskell.org/package/semigroups-0.16.1/docs/Data-Semigroup.html#t:Min</a> <<a href="https://hackage.haskell.org/package/semigroups-0.16.1/docs/Data-Semigroup.html#t:Min" target="_blank">https://hackage.haskell.org/package/semigroups-0.16.1/docs/Data-Semigroup.html#t:Min</a>><br>
<br>
Basically:<br>
<br>
instance Functor Sum where<br>
  fmap f (Sum x) = Sum (f x)<br>
<br>
instance Foldable Sum where<br>
  foldMap f (Sum a) = f a<br>
<br>
instance Traversable Sum where<br>
  traverse f (Sum a) = Sum <$> f a<br>
<br>
instance Applicative Sum where<br>
  pure = Sum<br>
  a <* _ = a<br>
  _ *> a = a<br>
  Sum f <*> Sum x = Sum (f x)<br>
<br>
instance Monad Sum where<br>
  return = Sum<br>
  _ >> a = a<br>
  Sum a >>= f = f a<br>
<br>
instance MonadFix Sum where<br>
  mfix f = fix (f . getSum)<br>
<br>_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
<br></blockquote></div>