Есть такой код:
let mutable x =
[|
1; 2; 3; 4; 5;
2; 3; 5; 6; 3;
|]
let to_null =
for i in 0..9 do
x.[i] <- 0
загоняем его в интерпретатор и получаем соотв.:
val mutable x : int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0|]
val to_null : unit = ()
Всё правильно, всё логично.
А теперь снова засунем в интерпретатор x:
val mutable x : int [] = [|1; 2; 3; 4; 5; 2; 3; 5; 6; 3|]
и вызовет to_null:
> to_null;;
val it : unit = ()
> x;;
val it : int [] = [|1; 2; 3; 4; 5; 2; 3; 5; 6; 3|]
Поэтому следует быть осторожным при работе с mutable привязками в интерпретаторе и, по крайней мере, перезагружать их при каждой загрузке кода в fsi.