Proposal: Add singleton function to Data.List module

David Feuer david.feuer at gmail.com
Tue Aug 13 09:11:04 UTC 2019


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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20190813/f07703ae/attachment.html>


More information about the Libraries mailing list