<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Ok guys, I'd like to thank you for your answers. <br>
    In my still very limited knowledge of Haskell, I thought tuples were
    redundant while having available other constructs, namely data
    types. But there are so many corners that I'm not really sure about
    nothing.<br>
    <br>
    It was also referred that tuples are everywhere, namely on prelude
    and general standard library. I wasn't clear in this point, but I
    was not questioning if tuples should be used now, but why were they
    introduced in the language in first place.<br>
    <br>
    I've been reading the paper "A History of Haskell: Being Lazy With
    Class", Paul Hudak, John Hughes, Simon Peyton Jones, Philip Wadler,
    which I find a very interesting paper overall. <br>
    <br>
    From it, it looks that tuples were put first and only later came the
    data types. Then they have this section "5.4 Tuples and irrefutable
    patterns" where they make some considerations about language design
    decisions they had to make regarding the consistency of tuples:<br>
    <blockquote>&laquo;For a start, should single constructor data types, such
      as<br>
      <br>
      &nbsp;&nbsp;&nbsp; data Pair a b = Pair a b<br>
      <br>
      share the same properties as tuples, with a semantic discontinuity<br>
      induced by adding a second constructor? We were also concerned<br>
      about the efficiency of this lazy form of pattern matching, and
      the<br>
      space leaks that might result. Lastly, the unlifted form of tuples
      is<br>
      essentially incompatible with seq&#8212;another controversial feature<br>
      of the language, discussed in Section 10.3&#8212;because parallel
      evaluation<br>
      would be required to implement seq on unlifted tuples.<br>
      <br>
      In the end, we decided to make both tuples and algebraic data
      types<br>
      have a lifted semantics, so that pattern matching always induces<br>
      evaluation.&raquo;<br>
    </blockquote>
    Wouldn't Haskell be "cleaner" if it had left tuples out, replacing
    them with some standard types added (Pair, Triple, ...) and similar
    fst, snd functions? Then curry and uncurry wouldn't even be needed
    if I have this right.<br>
    <br>
    <br>
  </body>
</html>