Proposal: Add singleton function to Data.List module

Andrew Martin andrew.thaddeus at gmail.com
Tue Aug 13 18:44:45 UTC 2019


I'm +1 on this. I've defined this function in my own code before. Using
pure instead leads to harder-to-read code for future me and for
collaborators. It also leads to worse type errors in the event that I mess
something up.

On Tue, Aug 13, 2019 at 5:11 AM David Feuer <david.feuer at gmail.com> wrote:

> I'm moderately +1 for consistency, and for NonEmpty as well. There is a
> concept here: create a container containing exactly one value. As Tikhon
> indicates, this is a different concept from pure. For example, a singleton
> ZipList has one element, while a pure one has infinitely many elements.
>
> On Mon, Aug 12, 2019, 11: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
>


-- 
-Andrew Thaddeus Martin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20190813/815f02f0/attachment.html>


More information about the Libraries mailing list