File "t09bad.ml", lines 10-11, characters 0-44: 10 | module rec A : sig type 'a t = 'a B.t end 11 | = struct type 'a t = 'a B.t end Error: This recursive type is not regular. The type constructor "A.t" is defined as type "'a A.t" but it is used as "'a array A.t" after the following expansion(s): "'a B.t" = "< m : 'a list A.t; n : 'a array A.t >", "< m : 'a list A.t; n : 'a array A.t >" contains "'a array A.t" All uses need to match the definition for the recursive type to be regular.