Вы всегда можете использовать функции высокого порядка в модуле Array2D для работы с Array2D
в функциональном стиле. В частности, Array2D.mapi , работающий с индексами массива, подходит для этой задачи:
let test (xs: int[,]) =
xs |> Array2D.mapi (fun i j x -> if i=0 && j=0 then 3 else x)
EDIT:
Вообще говоря, ваша функция test
в порядке, поскольку вы можете ограничить побочные эффекты только внутри функции. Вы должны быть более осторожными в случае вложенных массивов; однако написание собственных функций с контролируемыми побочными эффектами обычно дает лучшую производительность, чем использование функций высокого порядка для Array2D
.