title: Basic f# error - pattern matching is implying the wrong type
body: <p>The following code takes 2 parameters. the first is a list of triples: The triple (d,m,y) is meant to represent a date.</p>
  
  <p>the second is an integer which is a month</p>
  
  <p>The code is meant to count the number of occurrences of dates with that month in the list</p>
  
  <p>p.s. I guess this probably looks like a homework question - it's not. It's from a course I did earlier in the year in ML and I'm trying to redo all the exercises in f#. So it's only for my benefit</p>
  
  <pre><code>let rec number_in_month (dates : (int * int * int) list, month) =  
      match dates with
      | [] -&gt; 0
      | (_,y,_) when month = y -&gt; 1 + number_in_month(dates.Tail, month)
      | _ -&gt; number_in_month(dates.Tail, month)
  </code></pre>
  
  <p>but it gives the error :</p>
  
  <blockquote>
    <p>This expression was expected to have type
        (int * int * int) list     but here has type
        'a * 'b * 'c</p>
  </blockquote>
  
  <p>any idea what I'm doing wrong?</p>