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 = # 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