File "t12bad.ml", lines 10-21, characters 0-7: 10 | module rec M : 11 | sig 12 | class ['a] c : 'a -> object 13 | method map : ('a -> 'b) -> 'b M.c 14 | end ... 18 | method map : 'b. ('a -> 'b) -> 'b M.c 19 | = fun f -> new M.c (f x) 20 | end 21 | end.. Error: This recursive type is not regular. The type constructor M.c is defined as type 'a M.c but it is used as 'b M.c. All uses need to match the definition for the recursive type to be regular.