title: Using Array.map on an array of arrays
body: <p>I have an array of arrays P, which represents a Matrix, as an array of row vectors (that representation is more convenient for my purposes), and I want to extract the column-vector j of that array. My first pass was:</p>
  
  <pre><code>let column (M: float[][]) (j: int) =
     Array.map(fun v -&gt; v.[j]) M
  </code></pre>
  
  <p>This fails to compile, telling me that v.[j] is using operator expr.[idx] on an object of indeterminate type. This is puzzling to me, because hovering over v recognizes v as a float[], which I believe is a row vector.  </p>
  
  <p>Furthermore, the following code works:</p>
  
  <pre><code>let column (M: float[][]) (j: int) =
     Array.map(fun v -&gt; v) M
     |&gt; Array.map (fun v -&gt; v.[j])
  </code></pre>
  
  <p>I fail to understand how the second example is different from the first one. The first map in the second example looks redundant: I am mapping an array to itself, and yet this seems to resolve the type determination problem.  </p>
  
  <p>Any help understanding what I am doing wrong or not seeing would be much appreciated!</p>