A recordclass is a class of objects all of the same general structure, where each object contains zero or more fields that can contain data. A record is an instance of a recordclass. All instances of the same class have the same number of data fields.
Examples of recordclasses that are predefined in Pop-11 are pairs, created by conspair, which are used for lists, and references, created by consref. E.g. all pairs have two fields, all refs have one field.
A field may be "full", i.e. unrestricted in type, and therefore able to contain any legal Pop-11 data-type, or restricted, e.g. to 7 bit integers, or 16 bit decimals, etc.
Each record class has an associated "key" and a family of procedures, as follows:
o A constructor procedure, for creating new instances (e.g. conspair)
o An exploder (or destructor) which can be applied to an instance
and puts all of its contents on the stack (e.g. destpair)
o A recognizer
o A collection of accessor/updater procedures, one for each field
in the recordclass. (For instance pairs have front and back, and
their updaters.)
o A class_print procedure for printing instances of the class.
(The class_print procedure for pairs, knows about printing
list structures using "[" and "]")
o A class_apply procedure for deciding what to do if an instance
is applied to some other object, as if it were a procedure.
(The class_apply procedure for pairs is invoked if you apply
a list to an integer N. It returns the N't item of the list.)
Each key is itself an instance of a special recordclass data-type called
keys, and its contents provide a lot of information about the class and
its instances.
In addition to the class-specific procedures there are generic procedures that can be applied to instances of many different data-types.