type 'par t = 'par let ident v = v (* here adding : 'a . 'a a -> 'a changes nothing *) class alias = object method alias : 'a . 'a t -> 'a = ident (* NOT OK *) end (* but *) let alias : 'a . 'a t -> 'a = ident (* OK *) type r = { alias : 'a . 'a t -> 'a} let alias = { alias = ident } (* OK *)