Proposal: add -XPolyKinds to Data.Monoid

Edward Kmett ekmett at gmail.com
Mon Jul 14 18:25:40 UTC 2014


+1 for me. The Monoid instance for Proxy was polykinded in its argument in
tagged, it just lost the polymorphism in the move into base.

-Edward


On Mon, Jul 14, 2014 at 2:21 PM, Carl Howells <chowells79 at gmail.com> wrote:

> I don't actually have a use case. I was just looking at Data.Monoid in
> depth for some other changes I'd like to propose, and noticed that
> instance was needlessly restrictive. This proposal was made for the
> same reason you're in favor - it might make something better for
> someone someday, and shouldn't make anything worse.
>
> On Mon, Jul 14, 2014 at 11:46 AM, Niklas Haas <haskell at nand.wakku.to>
> wrote:
> > On Mon, 14 Jul 2014 10:37:55 -0600, Carl Howells <chowells79 at gmail.com>
> wrote:
> >> At the moment, the Monoid instance for Data.Proxy.Proxy is only
> >> defined for types with kind *.
> >>
> >>     Prelude Data.Proxy Data.Monoid> (Proxy :: Proxy String) <> Proxy
> >>     Proxy
> >>     Prelude Data.Proxy Data.Monoid> :set -XDataKinds
> >>     Prelude Data.Proxy Data.Monoid> (Proxy :: Proxy 5) <> Proxy
> >>
> >>     <interactive>:8:20:
> >>         No instance for (Monoid (Proxy 5)) arising from a use of ‘<>’
> >>         In the expression: (Proxy :: Proxy 5) <> Proxy
> >>         In an equation for ‘it’: it = (Proxy :: Proxy 5) <> Proxy
> >>
> >> Enabling -XPolyKinds while compiling the Data.Monoid module is the
> >> only change necessary to make the Monoid instance for Proxy polykinded
> >> like Proxy itself is. I don't believe adding a language pragma would
> >> have any other effect on that module, and I believe the only effect of
> >> changing that instance would be allowing more correct programs to
> >> compile.
> >>
> >> This is my first proposal to this list, so I'm starting with something
> >> that I hope isn't controversial. Let me know if I should do anything
> >> different procedurally in future proposals.
> >>
> >> Thanks.
> >
> > +1 out of principle due to it being a harmless change that should be
> > invisible to most users.
> >
> > It's a bit unclear what the purpose of this would be, but it's similarly
> > unclear what the purpose of the Monoid instance on Proxy in general is.
> >
> > I wonder what you actually need this for.
> > _______________________________________________
> > Libraries mailing list
> > Libraries at haskell.org
> > http://www.haskell.org/mailman/listinfo/libraries
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://www.haskell.org/mailman/listinfo/libraries
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/libraries/attachments/20140714/2145c05e/attachment.html>


More information about the Libraries mailing list