On 29 June 2014 15:49, Grégoire Henry wrote: > Your first example is a particular case where we could assume that > 'W.a' and 'W.b' are distinct. They are 'fully abstract types', they > have no inhabitants. They were introduced in current typing context > (and not imported from the signature of another module) and we known > they are distinct. > This has bitten me before as well. It seems to me that whether or not a type is abstract and whether or not it has any values should be essentially independent characteristics, but it seems impossible to state in a signature that a type has no constructors. So there's this property of types that you can't preserve across module boundaries.