It is trivial to override a function
(,) :: a -> b -> (a,b) (,) ab = (a,b)
The strange thing (for me) is that this function is defined for arbitrary length tuples. So, for example, there is actually a function:
(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> ... -> (a,b,c,...)
How it's done? Why is this not done for all standard functions in tuples, for example zip?
Hoogle gives me no results , and I donβt see how the Haskell template could do this, so I assume that this should be some kind of magic in the compiler. But for me it is very non-Haskelli.