title: Functional programming function confusion
body: <p>I'm learning functional programming and am using Ocaml, but I'm having a bit of a problem with functions.</p>
  
  <p>Anyway, I have a tuple and I want to return its first value. (Very simple I know, sorry)</p>
  
  <pre><code>let bach (x,y):(float*float) = (x,y);;
  val bach : float * float -&gt; float * float = &lt;fun&gt;
  </code></pre>
  
  <p>All well and good up here.</p>
  
  <pre><code>let john (x,y):(float*float) = y;;
  val john : 'a * (float * float) -&gt; float * float = &lt;fun&gt;
  </code></pre>
  
  <p>Now this is what confuses me. Why is there a <code>'a</code> there? I know that it stands for a variable with an unknown type, but I'm confused as to how changing the return value adds that there.</p>
  
  <p>I am a self professed n00b in functional programming, please don't eat me :)</p>