Haskell Foldable Wats

David Laing dave.laing.80 at gmail.com
Wed Feb 24 21:03:51 UTC 2016

If I'm reading these threads correctly - and if I'm horribly mistaken then
I apologise - they mostly are people from the 20% against FTP grumbling
that the users are wrong, while a large chunk of the people from the 80%
for FTP not wanting to spend that sizeable amount of energy again to debate
an old argument.  If that is the case then libraries@ may not be as divided
as it seems.

To take it all back a step, unless I've missed a mail in this thread, we
only have a proposal for adding Functor instances for tuples of larger size
than 2.

If someone wants to put forward a proposal on how to remove the Functor /
Foldable / Traversable instances for tuples - including how to deal with
breakage in existing code and other migration issues - surely that's
another thread, that would start when someone properly fleshes out the


On Thu, Feb 25, 2016 at 5:10 AM, <amindfv at gmail.com> wrote:

>      What happened in the FTP was that the libraries@ had a heated
> discussion, the issue was taken to the users and to a vote, and we ended up
> with a clear message from users: 80% voted in one direction.
>      My suspicion is that on this issue too, libraries@ is more divided
> than the community is. I suggest we try to put this issue to bed, and if
> ~80% of the community says they don't want these instances, then yes --
> core libraries should use Writer instead of redefining their own instance
> for (,). Similarly, if ~80% want the instances, we can grumble that users
> are wrong but democracy has spoken.
> Tom
> El 24 feb 2016, a las 13:27, Manuel Gómez <targen at gmail.com> escribió:
> >> El 24 feb 2016, a las 12:27, Chris Allen <cma at bitemyapp.com> escribió:
> >>
> >> You can't not-include the instances because we'll just end up with
> orphans
> >> so that's not cricket I think.
> >
> >> On Wed, Feb 24, 2016 at 1:41 PM,  <amindfv at gmail.com> wrote:
> >> I don't know what this means -- can you elaborate?
> >>
> >> (What I'm proposing is, since there is a sizeable number of people on
> both
> >> sides of the issue who don't seem to be coming closer to an agreement,
> we
> >> bring a vote *to the users* on whether to provide Foldable/Traversable
> >> instances for tuples of size 2 and greater. If users say they're
> useful, we
> >> keep/add 'em. If they find them confusing/not useful, we remove/don't
> add
> >> 'em)
> >
> > If these instances were not included in base, then these instances
> > would nonetheless be made available to a large amount of code because
> > somebody will make a base-orphans library that will define these
> > instances, and many libraries written by authors who believe these
> > instances to be useful will depend on this package (or, worse yet,
> > define their own instances in their own packages which will clash with
> > each other and break things).  If any of these libraries end up in the
> > transitive closure of your packages’ dependencies, then you will have
> > these instances defined, regardless of your opinion of them, and
> > regardless of their exclusion from base.
> >
> > To avoid this unhelpful outcome, if the community decided to forbid
> > these instances, some language extension would have to be designed to
> > forbid instance definitions.  This has been discussed previously.  If
> > the community did this, it would break a lot of code that does use
> > these instances, and there would be no workaround, as forbidding
> > instances would have to be as global as defining instances.  Changing
> > the fundamental property of type class instances that makes them not
> > opt-in/opt-out, but automatically imported from transitive
> > dependencies, would remove one of the properties of the language that
> > (as Edward often argues) is a significant part of what makes Haskell
> > more useful and healthy than some of its kin.
> >
> > This is not a matter that can be resolved but by consensus, at least
> > not with the solutions that have been thus far proposed (simply
> > removing the instances or accepting the instances as they are).  We do
> > not appear to be approaching consensus on these particular solutions.
> > Accepting the instances as they are does have the benefit of already
> > being implemented and being used by a lot of code (but «we’ve always
> > done things this way» is not a good design criterion).  Adding more
> > instances for tuples would make the current situation more consistent,
> > although perhaps proponents of removing these instances would prefer
> > the current status quo: inconsistency, but less instances whose
> > existence they reject.
> _______________________________________________
> 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/20160225/bcb7d004/attachment.html>

More information about the Libraries mailing list