Массивы F #:
фиксированного размера, изменяемые с нуля, коллекции последовательных элементов данных одного типа
Так что это означает, чтов то время как вы можете изменить значение элемента в позиции n, вы не можете расширить массив, чтобы иметь больше элементов. Итак, ваша функция mkOrder
берет ваш массив source
и создает новый массив, добавляя в него новый элемент, если вы не захватите этот новый массив, который возвращается mkOrder
, он будет потерян. Если вы откроете интерактивное окно и попробуете сделать следующее:
> let array1 = [| 1; 2; 3 |];;
val array1 : int [] = [|1; 2; 3|]
> let array2 = Array.append array1 [|4|];;
val array2 : int [] = [|1; 2; 3; 4|]
> array1;;
val it : int [] = [|1; 2; 3|]
> array2;;
val it : int [] = [|1; 2; 3; 4|]
Приложение создает новый массив - оно не обновляет существующий массив.
Документация MS для массивов F #: здесь