List F#将数组2转换为列表

List F#将数组2转换为列表,list,f#,List,F#,我对函数式编程还是新手,所以如果我不知道如何做一些事情,我会回到过程式。我找到了一种方法来避免转换成列表,但我仍然想知道如何转换 下面是我将二维数组转换为列表的尝试 let board = Array2.init 10 20 (fun i j -> pull(i, j)) let mutable pieces = [] board |> Array2.mapi (fun i j a -> transform(i, j, a)) |> Array2.iter (fun

我对函数式编程还是新手,所以如果我不知道如何做一些事情,我会回到过程式。我找到了一种方法来避免转换成列表,但我仍然想知道如何转换

下面是我将二维数组转换为列表的尝试

let board = Array2.init 10 20 (fun i j -> pull(i, j))

let mutable pieces = []

board
|> Array2.mapi (fun i j a -> transform(i, j, a))
|> Array2.iter (fun a -> (pieces <- a :: pieces))
let board=Array2.init 10 20(乐趣i j->pull(i,j))
让可变片段=[]
板
|>Array2.mapi(乐趣i j a->transform(i,j,a))

|>在.Net中,多维数组是IEnumerable(非泛型)的,因此它可以:

let a2 = Array2.init 2 3 (fun x y -> (x+1)*(y+1))
let l = a2 |> Seq.cast<int> |> Seq.fold (fun l n -> n :: l) []
printfn "%A" l
让a2=Array2.init23(乐趣x y->(x+1)*(y+1))
让l=a2 |>Seq.cast |>Seq.fold(有趣的n->n::l)[]
printfn“%A”l
编辑:正如诺尔多林在评论中指出的,这甚至更好:

let l = a2 |> Seq.cast<int> |> Seq.toList
让l=a2 |>Seq.cast |>Seq.toList

Good solution…我刚刚删除了我的,因为它稍微复杂一些。不过我不妨指出,第二行可以简化为:let l=a2 |>Seq.cast |>Seq.to_list谢谢,我想我可以用IEnumerable做点什么,但我不知道怎么做。它是
Seq.toList
不是
Seq.to_list
(无法编辑,因为上面说:
编辑必须至少包含6个字符,非常感谢:/)Array2在.NET中的何处?如果它是您的函数,您可以提供源代码吗?谢谢我相信它已重命名为Array2D。它在F#runtime中。