Proposal: Add Applicative (and Monoid) instances in GHC.Generics

Oleg Grenrus oleg.grenrus at iki.fi
Wed Feb 21 18:27:40 UTC 2018


For helpers see `semigroups` package, Data.Semigroup.Generic module [1]

I indeed don't see strong argument for moving them into `base`, only if
we want to provide default `Generic` implementations for `Semigroup` &
`Monoid`. I'm not sure we do?

Oleg

[1]
http://hackage.haskell.org/package/semigroups-0.18.4/docs/Data-Semigroup-Generic.html

On 21.02.2018 20:16, Ryan Scott wrote:
> In response to each of your proposals:
>
>> 1. Add an instance (Monoid c => Applicative (K1 i c))
> This seems like a no-brainer to me. +1
>
>> 2. Add helpers
>>
>>          gmempty :: (Generic a, Applicative (Rep a)) => a
>>          gmempty = to (pure ())
>>
>>          gmappend :: (Generic a, Applicative (Rep a)) => a -> a -> a
>>          gmappend a b = to (from a <*> from b)
>>
>>          -- also gpure, gap for generic Applicative
> I'm weakly -1 on this. I don't think GHC.Generics should be a place
> where we collect combinators for generically implementing various type
> class methods. I'd prefer that these be left to downstream libraries,
> especially since they're usually extremely straightforward to
> implement and wouldn't cross the Fairbairn threshold for me.
>
>> 3. Add Monoid instances
> I think I support this idea. But just to be sure we're on the same
> page: can you say which instances in particular you're adding, and how
> you'd implement them?
>
> Ryan S.
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20180221/ebb40037/attachment.sig>


More information about the Libraries mailing list