Re: question 1, I am unsure how this could ever be useful. The point of singleton sum types is usually to get a newtype without the hassle of defining a module. So here you appear to want a mutable new type. You can do this with:
type new_int = { mutable x : int }
which will be easier to use than your type as you can use the projection syntax.
I could see this being useful if records were structurally typed (ie if isomorphic records were considered the same type) but in OCaml they are not.
Re: question 2. I am also unsure how this can be useful. What’s the difference between the two in F#? If the difference is that the second one is not boxed, I believe OCaml actually optimizes the first one in such a way when it can.
declared mutable in the definition of the record type type mutable_point = { mutable x : float; mutable y : float; }
the standard library provides references, which are mutable indirection cells. however, references are implemented as a single-field mutable record type 'a ref = { mutable contents : 'a; }