У меня есть функция, которая, как побочный эффект, мутирует массив, который передается в:
fun do_something (n: int, v: bool array) =
let
val i = ref 0
val count = ref 0
in while !i < n do
( if Array.sub (v, !i) then
Array.update (v, !i, false)
else
(count := !count + 1);
i := !i + 1
);
!count
end
Когда функция закончилась, я хочу, чтобы массив снова имел исходное содержимое. Как я могу это сделать?