> OCaml classes allow row polymorphism, but disallow immutable updates (immutable updates meaning create a new object with everything the same, but one element different.)
There's a functional update construct for objects:
http://caml.inria.fr/pub/docs/manual-ocaml/objectexamples.ht...
It works like { r with field = value }.