Next: Promises, Previous: Parameters, Up: Miscellaneous Datatypes [Contents][Index]
MIT/GNU Scheme provides a record abstraction, which is a simple and
flexible mechanism for building structures with named components.
Records can be defined and accessed using the procedures defined in this
section. A less flexible but more concise way to manipulate records is
to use the define-structure
special form (see Structure Definitions).
Returns a record-type descriptor, a value representing a new data type, disjoint from all others. The type-name argument must be a string, but is only used for debugging purposes (such as the printed representation of a record of the new type). The field-names argument is a list of symbols naming the fields of a record of the new type. It is an error if the list contains any duplicates. It is unspecified how record-type descriptors are represented.
Returns a procedure for constructing new members of the type represented
by record-type. The returned procedure accepts exactly as many
arguments as there are symbols in the given list, field-names;
these are used, in order, as the initial values of those fields in a new
record, which is returned by the constructor procedure. The values of
any fields not named in the list of field-names are unspecified.
The field-names argument defaults to the list of field-names in
the call to make-record-type
that created the type represented by
record-type; if the field-names argument is provided, it is
an error if it contains any duplicates or any symbols not in the default
list.
Returns a procedure for constructing new members of the type represented by record-type. The returned procedure accepts arguments in a keyword list, which is an alternating sequence of names and values. In other words, the number of arguments must be a multiple of two, and every other argument, starting with the first argument, must be a symbol that is one of the field names for record-type.
The returned procedure may be called with a keyword list that contains
multiple instances of the same keyword. In this case, the leftmost
instance is used and the other instances are ignored. This allows
keyword lists to be accumulated using cons
or cons*
, and
new bindings added to the front of the list override old bindings at the
end.
Returns a procedure for testing membership in the type represented by
record-type. The returned procedure accepts exactly one argument
and returns #t
if the argument is a member of the indicated
record type; it returns #f
otherwise.
Returns a procedure for reading the value of a particular field of a
member of the type represented by record-type. The returned
procedure accepts exactly one argument which must be a record of the
appropriate type; it returns the current value of the field named by the
symbol field-name in that record. The symbol field-name
must be a member of the list of field names in the call to
make-record-type
that created the type represented by
record-type.
Returns a procedure for writing the value of a particular field of a
member of the type represented by record-type. The returned
procedure accepts exactly two arguments: first, a record of the
appropriate type, and second, an arbitrary Scheme value; it modifies the
field named by the symbol field-name in that record to contain the
given value. The returned value of the modifier procedure is
unspecified. The symbol field-name must be a member of the list
of field names in the call to make-record-type
that created the
type represented by record-type.
Returns #t
if object is a record of any type and #f
otherwise. Note that record?
may be true of any Scheme value; of
course, if it returns #t
for some particular value, then
record-type-descriptor
is applicable to that value and returns an
appropriate descriptor.
Returns the record-type descriptor representing the type of
record. That is, for example, if the returned descriptor were
passed to record-predicate
, the resulting predicate would return
#t
when passed record. Note that it is not necessarily the
case that the returned descriptor is the one that was passed to
record-constructor
in the call that created the constructor
procedure that created record.
Returns #t
if object is a record-type descriptor; otherwise
returns #f
.
Returns the type name associated with the type represented by
record-type. The returned value is eqv?
to the
type-name argument given in the call to make-record-type
that created the type represented by record-type.
Next: Promises, Previous: Parameters, Up: Miscellaneous Datatypes [Contents][Index]