$ cat foo.mlmodule M = struct
type t = A | B of u
and u = C of t
end
module type N = sig
include module type of M
with type t = M.t
and type u = M.u
end
File "
foo.ml", line 8, characters 9-21:
Error: This variant or record definition does not match that of type M.t
The types for field B are not equal.
I guess the "and" in the constraint doesn't make the constraints mutually recursive, so what does it do?