Go to the first, previous, next, last section, table of contents.
[FIXME: this is pasted in from Tom Lord's original guile.texi and should
be reviewed]
A record type is a first class object representing a user-defined
data type. A record is an instance of a record type.
- procedure: record? obj
-
Returns
#t
if obj is a record of any type and #f
otherwise.
Note that record?
may be true of any Scheme value; there is no
promise that records are disjoint with other Scheme types.
- procedure: make-record-type type-name field-names
-
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.
- procedure: record-constructor rtd [field-names]
-
Returns a procedure for constructing new members of the type represented
by rtd. 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 that list 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 rtd;
if the field-names argument is provided, it is an error if it
contains any duplicates or any symbols not in the default list.
- procedure: record-predicate rtd
-
Returns a procedure for testing membership in the type represented by
rtd. The returned procedure accepts exactly one argument and
returns a true value if the argument is a member of the indicated record
type; it returns a false value otherwise.
- procedure: record-accessor rtd field-name
-
Returns a procedure for reading the value of a particular field of a
member of the type represented by rtd. 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 rtd.
- procedure: record-modifier rtd field-name
-
Returns a procedure for writing the value of a particular field of a
member of the type represented by rtd. 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
rtd.
- procedure: record-type-descriptor record
-
Returns a record-type descriptor representing the type of the given
record. That is, for example, if the returned descriptor were passed to
record-predicate
, the resulting predicate would return a true
value when passed the given 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 the given record.
- procedure: record-type-name rtd
-
Returns the type-name associated with the type represented by rtd. The
returned value is
eqv?
to the type-name argument given in
the call to make-record-type
that created the type represented by
rtd.
- procedure: record-type-fields rtd
-
Returns a list of the symbols naming the fields in members of the type
represented by rtd. The returned value is
equal?
to the
field-names argument given in the call to make-record-type
that
created the type represented by rtd.
Go to the first, previous, next, last section, table of contents.