title: FSharp pattern that matches List type
body: <p>I want to match the object obj1 of type "obj" according to its actual type.
  The problem is that the type check pattern for list type (the second one in the example below) does not match F# lists.</p>
  
  <pre><code>let obj1 = [1;2;3] :&gt; obj
  match obj1 with
      | :? System.Array as a -&gt; printfn "it's an array: %A" a
      | :? List&lt;_&gt; as l -&gt; printfn "It's a list: %A" l
      | _ -&gt; printfn "other type"
  </code></pre>
  
  <p>Outputs "other type", while I expect it to be "It's a list: [1;2;3]"</p>
  
  <p>How to check for list type properly?</p>