Dear camlers, Out of curiosity, I'd be happy to understand why the following definition is rejected: # module type T = sig type 'a format end;; module type T = sig type 'a format end # module F(X : T with type 'a format = 'a list constraint 'a = < .. >) = struct end;; File "", line 1, characters 13-67: Error: In this `with' constraint, the new definition of format does not match its original definition in the constrained signature: Type declarations do not match: type 'a format = 'a0 list is not included in type 'a format Their constraints differ. Would it be unsound to allow it? Cheers, ph.