<div dir="auto">I don't think an obscure GHC IO function needs to be considered with regard to naming. I don't currently have an opinion about whether to add this.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jul 16, 2019, 6:30 PM Theodore Lief Gannon <<a href="mailto:tanuki@gmail.com">tanuki@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Note that there is already a function named <font face="courier new, monospace">dup</font> in base [1], albeit in what's probably a low-traffic module (GHC.IO.Device).<div><br></div><div>As an alternative I would suggest <font face="courier new, monospace">twin</font>, which returns no results from Stackage Hoogle.</div><div><br></div><div>On the other hand, I'm roughly -0.5 on adding this at all; what use case does it serve that's not better handled with <font face="courier new, monospace">&&&</font>? (Those 22 occurences of <font face="courier new, monospace">id &&& id</font> seem most likely to provide illumination...)<br><div><br></div><div>[1]: <a href="https://hackage.haskell.org/package/base-4.5.1.0/docs/GHC-IO-Device.html#v:dup" target="_blank" rel="noreferrer">https://hackage.haskell.org/package/base-4.5.1.0/docs/GHC-IO-Device.html#v:dup</a></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jul 16, 2019 at 2:22 PM Dan Burton <<a href="mailto:danburton.email@gmail.com" target="_blank" rel="noreferrer">danburton.email@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="ltr">+1 for "dup", if it is to be included at all.<div><br clear="all"><div><div dir="ltr" class="m_-4655711373882172605gmail-m_-2471550934382924894gmail_signature">-- Dan Burton</div></div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jul 16, 2019 at 12:56 PM Vladislav Zavialov <<a href="mailto:vladislav@serokell.io" target="_blank" rel="noreferrer">vladislav@serokell.io</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">It is reasonably common. I have grepped Hackage using <a href="https://codesearch.aelve.com/haskell/" rel="noreferrer noreferrer" target="_blank">https://codesearch.aelve.com/haskell/</a> and<br>
<br>
* \x->(x,x) occurs 203 times<br>
* join (,) occurs 53 times<br>
* id &&& id occurs 22 times<br>
<br>
It also pops up in discussions as a counter-example of a linear function:<br>
<br>
dup :: a ->. (a,a)<br>
dup x = (x,x)  -- does not typecheck with -XLinearTypes!<br>
<br>
I think it should be added under the name "dup" (short for “duplicate”).<br>
<br>
- Vlad<br>
<br>
> On 16 Jul 2019, at 22:29, Lennart Augustsson <<a href="mailto:lennart@augustsson.net" target="_blank" rel="noreferrer">lennart@augustsson.net</a>> wrote:<br>
> <br>
> It's not harmful, but is it common enough to have a name?<br>
> <br>
> On Tue, Jul 16, 2019, 12:28 Ignat Insarov <<a href="mailto:kindaro@gmail.com" target="_blank" rel="noreferrer">kindaro@gmail.com</a>> wrote:<br>
> So, it is not considered harmful. Then I propose we add it to<br>
> Data.Tuple under a humane name.<br>
> <br>
> On Tue, 16 Jul 2019 at 19:41, Lennart Augustsson <<a href="mailto:lennart@augustsson.net" target="_blank" rel="noreferrer">lennart@augustsson.net</a>> wrote:<br>
> ><br>
> > Or 'join (,)'<br>
> ><br>
> > On Tue, Jul 16, 2019, 09:26 Zemyla <<a href="mailto:zemyla@gmail.com" target="_blank" rel="noreferrer">zemyla@gmail.com</a>> wrote:<br>
> >><br>
> >> id &&& id<br>
> >><br>
> >> On Tue, Jul 16, 2019, 10:58 Ignat Insarov <<a href="mailto:kindaro@gmail.com" target="_blank" rel="noreferrer">kindaro@gmail.com</a>> wrote:<br>
> >>><br>
> >>> Hello.<br>
> >>><br>
> >>> I wonder if there is a function like \x -> (x, x) in the standard libraries.<br>
> >>><br>
> >>> I looked up in Hoogle. It gave me links:<br>
> >>><br>
> >>> 1. <a href="https://hackage.haskell.org/package/utility-ht/docs/Data-Tuple-HT.html#v:double" rel="noreferrer noreferrer" target="_blank">https://hackage.haskell.org/package/utility-ht/docs/Data-Tuple-HT.html#v:double</a><br>
> >>> 2. <a href="https://hackage.haskell.org/package/extra/docs/Data-Tuple-Extra.html#v:dupe" rel="noreferrer noreferrer" target="_blank">https://hackage.haskell.org/package/extra/docs/Data-Tuple-Extra.html#v:dupe</a><br>
> >>> 3. <a href="https://hackage.haskell.org/package/relude/docs/Relude-Extra-Tuple.html#v:dupe" rel="noreferrer noreferrer" target="_blank">https://hackage.haskell.org/package/relude/docs/Relude-Extra-Tuple.html#v:dupe</a><br>
> >>><br>
> >>> None of these is to the standard library. I wonder if there is an<br>
> >>> intentional omission for some important reason? If not, I think this<br>
> >>> function should be added to Data.Tuple.<br>
> >>><br>
> >>> I know some of the persons that make decisions here like Category<br>
> >>> theory, so I point out this function is mentioned in Categories for<br>
> >>> the Working Mathematician, as δ, the diagonal function, on page 3<br>
> >>> (second edition), although set with angular brackets.<br>
> >>><br>
> >>> Have a great day.<br>
> >>> _______________________________________________<br>
> >>> Libraries mailing list<br>
> >>> <a href="mailto:Libraries@haskell.org" target="_blank" rel="noreferrer">Libraries@haskell.org</a><br>
> >>> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
> >><br>
> >> _______________________________________________<br>
> >> Libraries mailing list<br>
> >> <a href="mailto:Libraries@haskell.org" target="_blank" rel="noreferrer">Libraries@haskell.org</a><br>
> >> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
> _______________________________________________<br>
> Libraries mailing list<br>
> <a href="mailto:Libraries@haskell.org" target="_blank" rel="noreferrer">Libraries@haskell.org</a><br>
> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
<br>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" target="_blank" rel="noreferrer">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="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" rel="noreferrer">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="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" rel="noreferrer">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div>