Is there a function \x -> (x, x) in standard libraries?

Vladislav Zavialov vladislav at serokell.io
Tue Jul 16 19:56:24 UTC 2019


It is reasonably common. I have grepped Hackage using https://codesearch.aelve.com/haskell/ and

* \x->(x,x) occurs 203 times
* join (,) occurs 53 times
* id &&& id occurs 22 times

It also pops up in discussions as a counter-example of a linear function:

dup :: a ->. (a,a)
dup x = (x,x)  -- does not typecheck with -XLinearTypes!

I think it should be added under the name "dup" (short for “duplicate”).

- Vlad

> On 16 Jul 2019, at 22:29, Lennart Augustsson <lennart at augustsson.net> wrote:
> 
> It's not harmful, but is it common enough to have a name?
> 
> On Tue, Jul 16, 2019, 12:28 Ignat Insarov <kindaro at gmail.com> wrote:
> So, it is not considered harmful. Then I propose we add it to
> Data.Tuple under a humane name.
> 
> On Tue, 16 Jul 2019 at 19:41, Lennart Augustsson <lennart at augustsson.net> wrote:
> >
> > Or 'join (,)'
> >
> > On Tue, Jul 16, 2019, 09:26 Zemyla <zemyla at gmail.com> wrote:
> >>
> >> id &&& id
> >>
> >> On Tue, Jul 16, 2019, 10:58 Ignat Insarov <kindaro at gmail.com> wrote:
> >>>
> >>> Hello.
> >>>
> >>> I wonder if there is a function like \x -> (x, x) in the standard libraries.
> >>>
> >>> I looked up in Hoogle. It gave me links:
> >>>
> >>> 1. https://hackage.haskell.org/package/utility-ht/docs/Data-Tuple-HT.html#v:double
> >>> 2. https://hackage.haskell.org/package/extra/docs/Data-Tuple-Extra.html#v:dupe
> >>> 3. https://hackage.haskell.org/package/relude/docs/Relude-Extra-Tuple.html#v:dupe
> >>>
> >>> None of these is to the standard library. I wonder if there is an
> >>> intentional omission for some important reason? If not, I think this
> >>> function should be added to Data.Tuple.
> >>>
> >>> I know some of the persons that make decisions here like Category
> >>> theory, so I point out this function is mentioned in Categories for
> >>> the Working Mathematician, as δ, the diagonal function, on page 3
> >>> (second edition), although set with angular brackets.
> >>>
> >>> Have a great day.
> >>> _______________________________________________
> >>> 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



More information about the Libraries mailing list