I could not declare the fields for example as a polymorphic tuple for instance: "type idref = { mutable 'a * 'b -> 'a }" nor "type idref = { mutable 'a. 'b -> 'a }". The latter is just nonsense, the 'b is undefined. But we could have a two field record by just repeating the type definitions. "let idref = { mutable 'a. 'a -> 'a; mutable 'b. 'b -> 'b }". The polymorphic type does not have any restriction, it appears we could have any fundamental type we wanted. The type 'a variable must be repeated, it is not enough to say "type idref = { mutable 'a. -> 'a };;" Is it correct then to read the declaration in this way: the type 'a polymorphic type as a polymorphic variable of type 'a. I know it sounds redundant, but that is how I am reading the syntax.