title: Why prefer currying to tuple arguments in OCaml?
body: <p><a href="http://www.cs.jhu.edu/~scott/pl/lectures/caml-intro.html" rel="noreferrer">"Introduction to Caml"</a> says</p>
  
  <blockquote>
    <p>Note, in Caml it is better to use Curried function definitions for multiple-argument functions, not tuples.</p>
  </blockquote>
  
  <p>when comparing <code>'a -&gt; 'b -&gt; 'c</code> calling conventions to <code>'a * 'b -&gt; 'c</code>.</p>
  
  <p>When working with SML/NJ I got used to using tuple types for both input and output : <code>('a * 'b) -&gt; ('c * 'd)</code> so using tuples to express multiple inputs seems symmetric with the way I express multiple outputs.</p>
  
  <p>Why is currying recommended for OCaml function declarations over tuple arguments?  Is it just the greater flexibility that comes with allowing currying/partial evaluation, or is there some other benefit that derives from implementation details of the OCaml compiler?</p>