Proposal: Add singleton function to Data.List module

Edward Kmett ekmett at gmail.com
Tue Aug 13 08:27:16 UTC 2019


I'm a very weak personal -1 on this, just because pure already exists, is
half the length of the word in question, and adding 'singleton' will
introduce at least a few import conflicts, but I won't fight too hard for
my position.

-Edward

On Tue, Aug 13, 2019 at 12:44 AM Matthew Pickering <
matthewtpickering at gmail.com> wrote:

> Clear +1 from me. I have defined this function many times.
>
> The addition of a one line function does not prevent anyone from using
> `pure` in their own code if they wish to obfuscate matters.
>
> Cheers,
>
> Matt
>
> On Tue, Aug 13, 2019 at 6:35 AM Elliot Cameron <eacameron at gmail.com>
> wrote:
> >
> > Seq is applicative and also has singleton. Some people like to avoid
> polymorphism when the use case is clearly monomorphic (c.f. discussion
> about map vs fmap).
> >
> > I'd like to point out that Pointed is sort of the abstraction we really
> want for this... But I still want a monomorphic function that doesn't delve
> into Kmett dependencies.
> >
> > On Mon, Aug 12, 2019 at 11:59 PM George Wilson <george at wils.online>
> wrote:
> >>
> >> Weak +1, I'd want it in NonEmpty too if it's going into List.
> >>
> >> On Tue, 13 Aug 2019 at 13:37, Joseph C. Sible <josephcsible at gmail.com>
> wrote:
> >> >
> >> > -1. AFAICT, "Polymorphic, works for any `Functor`" is an upside of
> >> > just using `pure`, not a downside. (Please correct me if I'm wrong,
> >> > and there is some disadvantage that I don't see.) Also, it looks like
> >> > for everything that has a `singleton`, it's something that isn't an
> >> > applicative functor, so they have them instead of `pure`, not in
> >> > addition to it.
> >> >
> >> > Joseph C. Sible
> >> >
> >> > On Mon, Aug 12, 2019 at 12:14 PM Taylor Fausak <taylor at fausak.me>
> wrote:
> >> > >
> >> > > I originally made this suggestion on GitLab, but I was told to make
> it here instead.
> >> > >
> >> > > https://gitlab.haskell.org/ghc/ghc/issues/17042
> >> > >
> >> > > ---
> >> > >
> >> > > # Add list singleton function
> >> > >
> >> > > ## Motivation
> >> > >
> >> > > Sometimes it is convenient to have a function to wrap an element in
> a list. There are many ways to do this already, but none of them are as
> clear as a separate monomorphic function.
> >> > >
> >> > > - `pure`: Polymorphic, works for any `Functor`.
> >> > > - `pure @[]`: Noisy, requires `-XTypeApplications`.
> >> > > - `(: [])`: Subjectively ugly.
> >> > > - `(\x -> [x])`: Syntactically noisy.
> >> > >
> >> > > This Twitter thread includes some additional commentary:
> https://twitter.com/taylorfausak/status/1159264862247280640
> >> > >
> >> > > ## Proposal
> >> > >
> >> > > I would like to add a `singleton` function to `Data.List` that
> mirrors the `singleton` function for other containers:
> https://www.stackage.org/lts-14.0/hoogle?q=singleton
> >> > >
> >> > > ``` hs
> >> > > singleton :: a -> [a]
> >> > > singleton x = [x]
> >> > > ```
> >> > >
> >> > > Other Haskell-like languages include this function:
> >> > >
> >> > > - PureScript:
> https://pursuit.purescript.org/packages/purescript-lists/5.4.0/docs/Data.List#v:singleton
> >> > > - Elm:
> https://package.elm-lang.org/packages/elm/core/latest/List#singleton
> >> > > _______________________________________________
> >> > > 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
> _______________________________________________
> 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/20190813/a518b1f9/attachment.html>


More information about the Libraries mailing list