title: high-order functions in ML
body: <p>struggling to understand high-order functions in ml.</p>
  
  <pre><code>&gt; fn a =&gt; fn b =&gt; fn c =&gt; (a c,b c);
  val it = fn: ('a -&gt; 'b) -&gt; ('a -&gt; 'c) -&gt; 'a -&gt; 'b * 'c
  </code></pre>
  
  <p>can someone explain to me how this work. I do not understand how "a" goes to "c" for the second part. I believe the output should be:</p>
  
  <pre><code>val it = fn:  a -&gt; b -&gt; c -&gt; a * c -&gt; b * c    
  </code></pre>
  
  <p>?</p>