Refal Plus programs deal with objects of several types: function objects, box objects, table objects, channel objects, vector objects and string objects.
Function objects contain compiled function definitions, and are created at compile time.
All other objects may be created statically (i.e. at compile time) as well as dynamically (i.e. at run time).
Box objects store ground expressions, each box containing one ground expression
Table objects store unordered sets of ordered pairs, each pair consisting of two ground expressions. The first component of a pair is said to be a key, whereas the second component is said to be the value associated with the key. All keys appearing in a table must be different from each other. Thus, each key in a table unambiguously corresponds to its value. Thus, a key uniquely determines its value.
Channel objects are used for input/output operations.
Vector objects store finite sequences of ground expressions.
String objects store finite character sequences.