<div dir="ltr">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.<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Aug 13, 2019 at 5:11 AM David Feuer <<a href="mailto:david.feuer@gmail.com">david.feuer@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">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.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Aug 12, 2019, 11:14 PM Taylor Fausak <<a href="mailto:taylor@fausak.me" rel="noreferrer" target="_blank">taylor@fausak.me</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I originally made this suggestion on GitLab, but I was told to make it here instead.<br>
<br>
<a href="https://gitlab.haskell.org/ghc/ghc/issues/17042" rel="noreferrer noreferrer noreferrer" target="_blank">https://gitlab.haskell.org/ghc/ghc/issues/17042</a><br>
<br>
---<br>
<br>
# Add list singleton function<br>
<br>
## Motivation<br>
<br>
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.<br>
<br>
- `pure`: Polymorphic, works for any `Functor`.<br>
- `pure @[]`: Noisy, requires `-XTypeApplications`.<br>
- `(: [])`: Subjectively ugly.<br>
- `(\x -> [x])`: Syntactically noisy.<br>
<br>
This Twitter thread includes some additional commentary: <a href="https://twitter.com/taylorfausak/status/1159264862247280640" rel="noreferrer noreferrer noreferrer" target="_blank">https://twitter.com/taylorfausak/status/1159264862247280640</a><br>
<br>
## Proposal<br>
<br>
I would like to add a `singleton` function to `Data.List` that mirrors the `singleton` function for other containers: <a href="https://www.stackage.org/lts-14.0/hoogle?q=singleton" rel="noreferrer noreferrer noreferrer" target="_blank">https://www.stackage.org/lts-14.0/hoogle?q=singleton</a><br>
<br>
``` hs<br>
singleton :: a -> [a]<br>
singleton x = [x]<br>
```<br>
<br>
Other Haskell-like languages include this function:<br>
<br>
- PureScript: <a href="https://pursuit.purescript.org/packages/purescript-lists/5.4.0/docs/Data.List#v:singleton" rel="noreferrer noreferrer noreferrer" target="_blank">https://pursuit.purescript.org/packages/purescript-lists/5.4.0/docs/Data.List#v:singleton</a><br>
- Elm: <a href="https://package.elm-lang.org/packages/elm/core/latest/List#singleton" rel="noreferrer noreferrer noreferrer" target="_blank">https://package.elm-lang.org/packages/elm/core/latest/List#singleton</a><br>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" rel="noreferrer noreferrer" target="_blank">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" target="_blank">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr" class="gmail_signature">-Andrew Thaddeus Martin</div>