title: How do you read OCaml function typing output in your mental dialog?
body: <p>For <a href="http://caml.inria.fr/pub/docs/oreilly-book/pdf/chap2.pdf#page=25" rel="nofollow">[1]</a>:</p>
  
  <pre><code># let make pair int (x:int) (y:int) = x,y ;;
  val make_pair_int : int -&gt; int -&gt; int * int = &lt;fun&gt;
  </code></pre>
  
  <p>How do you read the typing information output?  In other languages, I find being able to construct a cogent, English sentence out of the syntax or the printouts to be critical in understanding what's going on.  What's the sentence for the above OCaml statement?</p>
  
  <p>Could someone diagram out the printout so as to correlate the typing information back into English?  Like:</p>
  
  <pre><code>val make_pair_int : int -&gt; int -&gt; int * int = &lt;fun&gt;
        |              |   |  |   |  \_____/  \__/
        |              |   |  |   |     |       ` is a function
        |              |   |  |   |     ` a tuple of integers
        |              |   |  |   `
        |              |   |  `
        |              |   `
        |              `
        ` symbol make_pair_int is bound to
  </code></pre>