That is pretty neat. Does it mean that one could do something similar for vectors and quaternions?
let open Quaternion in
x * y + x let open Quaternion in
x * y + x module Quaternion = struct
let (+) =
...
let ( * ) =
...
end
then let open Quaternion in
imports the contents of Quaternion into local scope, so you can write x * y + z