title: Using incomplete pattern matching as filter?
body: <p>Suppose I have the following code:</p>
  
  <pre><code>type Vehicle =
  | Car  of string * int
  | Bike of string
  
  let xs = [ Car("family", 8); Bike("racing"); Car("sports", 2); Bike("chopper") ]
  </code></pre>
  
  <p>I can filter above list using incomplete pattern matching in an imperative for loop like:</p>
  
  <pre><code>&gt; for Car(kind, _) in xs do
  &gt;    printfn "found %s" kind;;
  
  found family
  found sports
  val it : unit = ()
  </code></pre>
  
  <p>but it will cause a:<code>warning FS0025: Incomplete pattern matches on this expression. For example, the value 'Bike (_)' may indicate a case not covered by the pattern(s). Unmatched elements will be ignored.</code></p>
  
  <p>As the ignoring of unmatched elements is my intention, is there a possibility to get rid of this warning?</p>
  
  <p>And is there a way to make this work with list-comprehensions without causing a MatchFailureException? e.g. something like that:</p>
  
  <pre><code>&gt; [for Car(_, seats) in xs -&gt; seats] |&gt; List.sum;;
  val it : int = 10
  </code></pre>