A phantom type used to parameterize functions based on records.
This let's us avoid passing
undefineds or manually creating instances
all the time. It can only be created for types which are records and
is used as a token to most of the API's functions.
a is a data type with a single constructor
and is a record.
The smart constructor for
will return a
RecordT if and only if the type is a record.