title: F# value restriction in empty list
body: <p>I have a F# function:</p>
  
  <pre><code>let removeEven (listToGoUnder : _ list) =
      let rec listRec list x =
          match list with
          | [] -&gt; []
          | head::tail when (x%2 = 0) -&gt; head :: listRec (tail) (x+1)
          | head::tail -&gt; listRec (tail) (x+1)
  
       listRec listToGoUnder 0
  </code></pre>
  
  <p>It removes all elements at an even index in a list. 
  It works if I give the list some imput, like <code>removeEven ['1';'2';'3']</code> I get <code>['1';'3']</code> which I am supposed to. But when I insert a empty list as parameter, I get this error:</p>
  
  <blockquote>
    <p>stdin(78,1): error FS0030: Value restriction. The value 'it' has been
    inferred to have generic type</p>
    
    <p>val it : '_a list     Either define 'it' as a simple data term, make
    it a function with explicit arguments or, if you do not intend for it
    to be generic, add a type annotation.</p>
  </blockquote>
  
  <p>Help, anybody?</p>