[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
6.7.9 Records
A record type is a first class object representing a user-defined data type. A record is an instance of a record type.
Note that in many ways, this interface is too low-level for every-day use. Most uses of records are better served by SRFI-9 records. See section SRFI-9 Records.
- Scheme Procedure: record? obj
Return
#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.
- Scheme Procedure: make-record-type type-name field-names [print]
Create and return a new record-type descriptor.
type-name is a string naming the type. Currently it’s only used in the printed representation of records, and in diagnostics. field-names is a list of symbols naming the fields of a record of the type. Duplicates are not allowed among these symbols.
(make-record-type "employee" '(name age salary))
The optional print argument is a function used by
display
,write
, etc, for printing a record of the new type. It’s called as(print record port)
and should look at record and write to port.
- Scheme Procedure: record-constructor rtd [field-names]
Return 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.
- Scheme Procedure: record-predicate rtd
Return 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.
- Scheme Procedure: record-accessor rtd field-name
Return 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.
- Scheme Procedure: record-modifier rtd field-name
Return 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.
- Scheme Procedure: record-type-descriptor record
Return 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 torecord-constructor
in the call that created the constructor procedure that created the given record.
- Scheme Procedure: record-type-name rtd
Return the type-name associated with the type represented by rtd. The returned value is
eqv?
to the type-name argument given in the call tomake-record-type
that created the type represented by rtd.
- Scheme Procedure: record-type-fields rtd
Return 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 tomake-record-type
that created the type represented by rtd.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on April 20, 2013 using texi2html 5.0.