Proposal: Add singleton function to Data.List module

Nathan Bouscal nbouscal at gmail.com
Wed Aug 21 10:22:22 UTC 2019


Hi all,

I would strongly encourage anyone inclined to say things like “there's
no benefit
in having the function” to consider reframing the sentiment as “I wouldn’t
benefit from having the function, and don’t understand the benefit others
will gain.” Once you’ve done that reframe, you can notice that there’s a
lack of understanding toward which the appropriate emotional stance is
curiosity, not dismissiveness. A lot of people have clearly expressed in
this thread that they would benefit from this function, and when you assert
as fact that such benefit does not exist, you’re implicitly dismissing and
devaluing their experience.

Independent of any technical merits or readability concerns per se, there
is a signaling aspect to this discussion. Already this thread has been
referenced many times on social media, and it’s sending a very loud signal:
“we don’t want you here”. Not because of the content of the discussion, but
because of its tone. I happen to think that Haskell is a fantastic language
for beginners, and I’ve been watching in real time as potential learners
are deciding it isn’t for them. I’ve also been seeing experienced
Haskellers deciding it’s not worth it to participate in the libraries
process. You can argue as much as you want that people are wrong to get
that signal from this thread, that they’re misinterpreting the comments
here, etc, but none of that changes the outcome. We can do better than this.


On the proposal itself: I’ve been writing Haskell for several years now and
have founded a company that uses Haskell in production, so I’d like to
think I’m at least a step or two beyond “beginner”, and yet I cannot recall
the last time I saw (:[]) in my code or anyone else’s, and seeing it here
caused me to double-take and take a moment to mentally parse it. If that’s
the case for me, I’m sure it must be far worse for an actual beginner.
Building things by composing primitives is good, but if anyone put this
operator into my codebase I’d likely flag it in code review. Readability
isn’t about whether it’s possible to read something, it’s about how easy it
is to read, and for me this operator doesn’t pass that test. Personally I
tend to use pure, but a monomorphic option would be better. I would happily
change to using singleton if it becomes available, and am a +1 on the
proposal for both List and NonEmpty.


Nathan


On Wed, Aug 21, 2019 at 6:32 AM George Wilson <george at wils.online> wrote:

> Hi Taylor,
>
> I'm on the Core Libraries Committee. Thank you for your proposal.
> Regarding the +-1 messages in this thread, they are useful to gauge
> community opinion, but they are not votes because the libraries
> process is not determined by a vote.
>
> Despite seeming innocuous, the proposed change requires careful
> consideration: Data.List is specified by the Haskell Report, so adding
> this function would affect the report.
> While simple changes to base are typically handled directly by one of
> base's maintainers, this change is report-affecting, so it is
> "controversial" (as defined in [1]). Hence the CLC is discussing the
> proposed change amongst ourselves before a maintainer makes their
> decision.
>
> [1] https://wiki.haskell.org/Library_submissions
>
> Cheers,
> George
>
>
>
>
>
> On Tue, 20 Aug 2019 at 11:24, Taylor Fausak <taylor at fausak.me> wrote:
> >
> > It has been a week since I submitted my proposal. During that time, 28
> people voted, with 16 expressing approval and 12 expressing disapproval. To
> everyone that voted so far: Thank you! You made for interesting discussion.
> >
> > I still feel that Haskell would be improved by the addition of a
> `singleton` function to the `Data.List` module. (And also
> `Data.List.NonEmpty`, even though that wasn't part of my original
> proposal.) I would be happy to open a merge request adding code, tests, and
> documentation.
> >
> > I haven't done so yet because I don't know what the next steps are. Can
> someone from the CLC tell me how an official approval or rejection can be
> reached, and how long that might take? Thanks!
> >
> > On Mon, Aug 19, 2019, at 6:39 AM, Helmut Schmidt wrote:
> >
> >
> > Andreas, you seem to be mistaken there'd only be one container API? But
> there's several container APIs besides "Data.Set" which provide some
> collection of elements!
> >
> >
> https://hackage.haskell.org/package/dlist-0.8.0.7/docs/Data-DList.html#v:cons
> >
> >
> https://hackage.haskell.org/package/dlist-0.8.0.7/docs/Data-DList.html#v:append
> >
> >
> >
> >
> >
> https://hackage.haskell.org/package/text-1.2.4.0/docs/Data-Text.html#v:cons
> >
> >
> https://hackage.haskell.org/package/text-1.2.4.0/docs/Data-Text.html#v:append
> >
> >
> http://hackage.haskell.org/package/vector-0.12.0.3/docs/Data-Vector.html#v:cons
> >
> >
> https://hackage.haskell.org/package/bytestring-0.10.10.0/docs/Data-ByteString.html#v:cons
> >
> >
> https://hackage.haskell.org/package/bytestring-0.10.10.0/docs/Data-ByteString.html#v:append
> >
> > Am Mo., 19. Aug. 2019 um 08:16 Uhr schrieb Andreas Abel <
> andreas.abel at ifi.lmu.de>:
> >
> > Helmut, do you actually know the container APIs?
> >
> > Show me cons and append in Data.Set!
> >
> > On 2019-08-18 19:40, Helmut Schmidt wrote:
> > >
> > >
> > > Am So., 18. Aug. 2019 um 17:17 Uhr schrieb Oliver Charles
> > > <ollie at ocharles.org.uk <mailto:ollie at ocharles.org.uk>>:
> > >
> > >     On Sun, 18 Aug 2019, 5:47 pm Helmut Schmidt,
> > >     <helmut.schmidt.4711 at gmail.com
> > >     <mailto:helmut.schmidt.4711 at gmail.com>> wrote:
> > >
> > >
> > >         All these philosophical arguments calling for "consistency"
> with
> > >         the container APIs or that function need words for the human
> > >         mind to comprehend seem short-sighted to me. If we were
> > >         consistent about the proposal itself we'd also demand to add
> > >
> > >            cons = (:)
> > >
> > >            empty = []
> > >
> > >            toList = id
> > >
> > >            fromList = id
> > >
> > >
> > >     I honestly have no problem with any of these.
> > >
> > >
> > > I forgot
> > >
> > >      append = (++)
> > >
> > > We also need to address another elephant in the room... those pesky
> > > tuples and their special privileged non-wordy syntax!
> > >
> > >     pair = (,)
> > >
> > >     triple = (,,)
> > >
> > >     quadruple = (,,,)
> > >
> > >     quituple = (,,,,)
> > >
> > >     sextuple = (,,,,,)
> > >
> > >     septuble = (,,,,,,)
> > >
> > >     octuple = (,,,,,,,)
> > >
> > > If Haskell were invented in this century's EU Haskell source code would
> > > be littered with €s instead of $s but then again I wonder why £ wasn't
> > > picked. But I digress. We can kill two birds with one stone here:
> > >
> > >     apply = ($)
> > >
> > >     strictApply = ($!)
> > >
> > >     compose = (.)
> > >
> > >
> > > It's fun to imagine how code using those definitions would like! But
> > > it's still a -1 for me, sorry!
> > >
> > >
> > >
> > >
> > > _______________________________________________
> > > 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
> _______________________________________________
> 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/20190821/212ddf36/attachment.html>


More information about the Libraries mailing list