I'm a little confused by some behavior I'm seeing. Here is an example from the toplevel:
# let foo () =
let str = "ffff" in
Printf.printf "%s\n%!" str;
str.[0] <- 'r';
str.[1] <- 'r';
str.[2] <- 'r';
str.[3] <- 'r';
str
;;
val foo : unit -> string = <fun>
# foo ();;
ffff
- : string = "rrrr"
# foo ();;
rrrr
- : string = "rrrr"
#
Why isn't the output for the second printf also "ffff"? It seems like it's completely ignoring "let str =" the second time.
Any thoughts? Is this a bug, or something I just don't know about?
3.10.1 on intel osx 10.5.1, installed from godi.
Thanks,
Ralph