Proposal: Functor and friends for the wrappers in Data.Monoid

Edward Kmett ekmett at gmail.com
Sun Feb 22 13:42:01 UTC 2015


Thanks!

On Sun, Feb 22, 2015 at 7:40 AM, Oleg Grenrus <oleg.grenrus at iki.fi> wrote:

> And there are the ticket and the patch:
>
> https://ghc.haskell.org/trac/ghc/ticket/10107
> https://phabricator.haskell.org/D673
>
>
> > On 22 Feb 2015, at 12:07, Oleg Grenrus <oleg.grenrus at iki.fi> wrote:
> >
> > To clarify the discussion:
> >
> > Let's add the following instances:
> >
> > A: Functor, Foldable, Traversable to Sum, Product, Dual, First, and Last
> > B: Data to everything in Data.Monoid (except Endo): Sum, Product, Dual,
> First and Last, All, Any, Alt
> > C: Applicative, Monad, MonadFix to Sum, Product, Dual, First and Last
> > D: Data to Identity
> >
> > All seem to agree on A and B, C is "not sure", and D is new item.
> >
> > - Oleg
> >
> >> On 21 Feb 2015, at 17:34, Oleg Grenrus <oleg.grenrus at iki.fi> wrote:
> >>
> >> I propose to add Functor, Applicative, Monad, Foldable, and Traversable
> and maybe even MonadFix instances to wrapper newtypes in the Data.Monoid
> module.
> >> The same way as in the semigroups package, e.g.
> https://hackage.haskell.org/package/semigroups-0.16.1/docs/Data-Semigroup.html#t:Min
> <
> https://hackage.haskell.org/package/semigroups-0.16.1/docs/Data-Semigroup.html#t:Min
> >
> >>
> >> Basically:
> >>
> >> instance Functor Sum where
> >> fmap f (Sum x) = Sum (f x)
> >>
> >> instance Foldable Sum where
> >> foldMap f (Sum a) = f a
> >>
> >> instance Traversable Sum where
> >> traverse f (Sum a) = Sum <$> f a
> >>
> >> instance Applicative Sum where
> >> pure = Sum
> >> a <* _ = a
> >> _ *> a = a
> >> Sum f <*> Sum x = Sum (f x)
> >>
> >> instance Monad Sum where
> >> return = Sum
> >> _ >> a = a
> >> Sum a >>= f = f a
> >>
> >> instance MonadFix Sum where
> >> mfix f = fix (f . getSum)
> >> _______________________________________________
> >> Libraries mailing list
> >> Libraries at haskell.org
> >> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
> >
> > _______________________________________________
> > Libraries mailing list
> > Libraries at haskell.org
> > http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20150222/a000dbf4/attachment.html>


More information about the Libraries mailing list