title: What does the h :: t pattern matching means in OCaml?
body: <p>I'm reading <a href="https://ocaml.org/learn/tutorials/99problems.html" rel="nofollow noreferrer">https://ocaml.org/learn/tutorials/99problems.html</a> and it has 2 examples:</p>
  
  <pre><code># let rec last_two = function
      | [] | [_] -&gt; None
      | [x;y] -&gt; Some (x,y)
      | _::t -&gt; last_two t;;
  </code></pre>
  
  <p>I understand the first one: <code>_::t</code> means pattern match anything and call it <code>t</code></p>
  
  <p>But at</p>
  
  <pre><code># let rec at k = function
      | [] -&gt; None
      | h :: t -&gt; if k = 1 then Some h else at (k-1) t;;
  </code></pre>
  
  <p>I don't understand what <code>h</code> means. For me it should be <code>_:: t -&gt; ...</code> to match anything and call it <code>t</code></p>