File "t08bad.ml", lines 10-11, characters 0-71: 10 | module rec A : sig type 'a t = end 11 | = struct type 'a 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): < m : 'a list B.t; n : 'a array B.t > contains 'a array B.t, 'a array B.t = 'a array A.t All uses need to match the definition for the recursive type to be regular.