title: The argument taken order of curried functions in OCaml
body: <p>Normally, we write a function like this </p>
  
  <pre><code>let abs_diff x y = abs (x-y)
  </code></pre>
  
  <p>also we can have a <code>curried version</code>:</p>
  
  <pre><code>let abs_diff = fun x -&gt; fun y -&gt; abs(x-y)
  </code></pre>
  
  <hr>
  
  <p>I write this question here just want to confirm that I understand <em>currying</em> correctly.</p>
  
  <p>Here is my understanding:</p>
  
  <ol>
  <li><p><code>let abs_diff = fun x -&gt; fun y -&gt; abs(x-y)</code> actually returns a function with one parameter which is <code>fun y -&gt; abs (x-y)</code> and inside it, x is the parameter</p></li>
  <li><p>So, when we apply <code>abs_diff 5 6</code>, it firsts takes the first argument <code>5</code>, returns a function <code>fun y -&gt; abs (5-y)</code>, then continue to apply to argument <code>6</code>, so the final result is <code>(fun y -&gt; abs (5-y)) 6</code></p></li>
  </ol>
  
  <p>Am I correct? </p>
  
  <p>Furthermore, to deal with an function application, is OCaml interpreter like utop, ocaml doing like point 2 above?</p>