行ベクトルの配列として行列を表す配列Pの配列があり(この表現は私の目的にとってより便利です)、その配列の列ベクトルjを抽出したいと思います。私の最初のパスは:
let column (M: float[][]) (j: int) =
Array.map(fun v -> v.[j]) M
これはコンパイルに失敗し、v。[j]が不確定なタイプのオブジェクトに対して演算子expr。[idx]を使用していることを示しています。vにカーソルを合わせると、vがfloat []として認識されるため、これは私には不可解です。これは行ベクトルであると私は信じています。
さらに、次のコードが機能します。
let column (M: float[][]) (j: int) =
Array.map(fun v -> v) M
|> Array.map (fun v -> v.[j])
2番目の例が最初の例とどのように違うのか理解できません。2番目の例の最初のマップは冗長に見えます。配列をそれ自体にマッピングしていますが、これで型決定の問題が解決したようです。
私が間違っていることや見ないことを理解する助けがあれば大歓迎です!