In OCaml 4.01, the compiler is smart enough to distinguish between constructors with the same name but a different type -- so those variants wouldn't even need to be polymorphic anymore. This also partially mitigates the need for 'namespacing' your variants.