Array2D
(многомерный массив) и Jagged массивы (массив массивов) - это два разных типа. Вы можете увидеть это по типу сигнатур:
let arr = Array2D.create 4 4 0 // int[,]
let arrJagged = toJagged arr // int [][]
Если вам нужен многомерный массив, я предлагаю вам придерживаться его или использовать целевую библиотеку матриц сборки (например, math.net). List
в F # - это односвязный неизменяемый список с некоторыми хорошими (легко создаваемыми и повторяемыми) и не очень хорошими (производительными) свойствами. AFAIK, 2D List отсутствует (может быть некоторая подходящая структура данных в расширенной базовой библиотеке).
Но вы можете легко конвертировать 2D-массив в список массивов или список списков, который является эквивалентом массива Jagged. Это одна строка:
[for i in 0 .. 3 -> arr.[*,i] |> Array.toList]
val it: int list list = [[0;0;0;0];[0;0;0;0];[0;0;0;0];[0;0;0;0]]
Или немного более общий:
let toListList arr =
[for x in 0 .. Array2D.length1 arr - 1 ->
[ for y in 0 .. Array2D.length2 arr - 1 -> arr.[x, y] ]
]
toListList arr ;;
val it: int list list = [[0 0;0;0;0];[0;0;0;0];[0;0;0;0];[0;0;0;0]]