rt = record[a: int, b: real] % a record type x: rt % x will denote objects of this record type. x := rt{a: 3, b: 1.1} % construct an object i: int := x.a( ) % read the a component x.set_b(1.7) % modify the b componentIn determining "record" type equality, the field names and types are significant and so is the order of the fields (3).

A "record" type "rt" has the following methods. ("st" is the related "struct" type, i.e., it has the same field names and types in the same order.)

Methods for "record" type "rt"

a ( ) returns (T) % (here a is a field name and T is the corresponding type) % effects returns the object stored in field a of self set_a (x: T) % (here a is a field name and T is the corresponding type) % modifies self % effects stores x in field a of self r_gets_r (x: rt) % modifies self % effects replaces the fields of self with the objects in the corresponding fields of x r_gets_s (x: st) % modifies self % effects replaces the fields of self with the objects in the corresponding fields of x to_s ( ) returns (st) % effects returns an st object containing the elements of self in the corresponding fields. equal (x: rt) returns (bool) % effects returns true if self and x are the same object else returns false. similar (x: rt) returns (bool) where all field types T of rt have similar(T) returns (bool) % effects returns true if all corresponding fields of self and x are similar % (using the T similar method for that field) else returns false copy ( ) returns (rt) where all field types T of rt have copy ( ) returns (T) % effects returns a new record each of whose fields contains a % copy of the object (obtained by calling that object's copy % method) in the corresponding field of self unparse ( ) returns (string) where all field types T have unparse ( ) returns (string) % effects returns a string representing the value of self. The form is % record{\tex{$n_1$}: \tex{$f_1$},...,\tex{$n_n$}: \tex{$f_n$}}, where \tex{$n_i$} is the name of the \tex{$i$}th % record field and \tex{$f_i$} is obtained by calling the unparse method % for the object in the corresponding field.

theta-questions@lcs.mit.edu