Create a byte array with dynamic size in F#

.net, arrays, f#

Solution

I think you would want to create an uninitialized array and fill it later:

let arr = Array.zeroCreate 10
for i in 0..9 do
   arr.[i] <- byte(i*i)

It's the way you normally do in C#/Java, which is unidiomatic in F#. Think about it; if you forget to initialize some elements, you have to deal with `null` nightmares.

In almost all cases, you can always replace the above procedure by high-order functions from Array module or array comprehension:

let arr = Array.init 10 (fun i -> byte(i*i))

or

let arr = [| for i in 0..9 do -> byte(i*i)|]

Take a look at this MSDN page; it contains useful information about using Array in F#.

Problem

In C# and Java a byte array can be created like this ``` byte[] b = new byte[x]; ``` where `x` denotes the size of the array. What I want to do is to do the same thing in F#. I have searched for how to do it and looked for it in the documentation. I think that I'm probably using the wrong search terms because I can't find out how. What I've found so far is that `Array.create` can be used like this: ``` let b = Array.create x ( new Byte() ) ``` Is there another way to do it which is more similiar to the way it can be done in C# and Java?

Original source