12345678910111213141516171819202122(** Runtime representation of types. It is only useful for inspecting
values, not types, eg. it is possible to write a generic printer but
not to deserialize. *)type'at=|Record:'afieldlist->'at|Variant:('a->case)->'at|Pair:'at*'bt->('a*'b)t|Triple:'at*'bt*'ct->('a*'b*'c)t|List:'at->'alistt|Option:'at->'aoptiont|To_string:('a->string)->'at|Indirect:('a->'b)*'bt->'atand'afield=F:string*('a->'b)*'bt->'afieldandcase=C:string*'b*'bt->case|C0:string->caseletbool:boolt=To_stringstring_of_boolletstring:stringt=To_string(funs->s)letint:intt=To_stringstring_of_int