I can not understand the reason for this behavior:
let example count = let arr = Array.create 2 (Array.zeroCreate count) for i in [0..count - 1] do arr.[0].[i] <- 1 arr.[1].[i] <- 2 arr example 2 |> Array.iter(printfn "%A")
Print
[|2; 2|] [|2; 2|]
https://dotnetfiddle.net/borMmO
If I replace:
let arr = Array.create 2 (Array.zeroCreate count)
in
let arr = Array.init 2 (fun _ -> Array.zeroCreate count)
Everything will work as expected:
let example count = let arr = Array.init 2 (fun _ -> Array.zeroCreate count) for i in [0..count - 1] do arr.[0].[i] <- 1 arr.[1].[i] <- 2 arr example 2 |> Array.iter(printfn "%A")
Print
[|1; 1|] [|2; 2|]
https://dotnetfiddle.net/uXmlbn
I think the reason is that the array is a reference type. But I want to understand why this is happening. Since I did not expect such results.
source share