I object to this egregiously gratuitous PLT-specificness, when it is
explicitly stated in the CookbookFAQ page that pages should not be
so gratuitously PLT-specific in contexts such as these. Here is the
equivalent SRFI 9 page:
Record types represent abstract, opaque data types. A record is an
instance of a particular record type. The DEFINE-RECORD-TYPE syntax
defines a new record type. An example is likely the easiest way to
understand the DEFINE-RECORD-TYPE macro:
This defines a record type PARE with two fields, A & D. KONS is
defined to be a procedure of two arguments, the two fields. PARE? is
defined to be a procedure of one argument, a disjoint type predicate
for PARE records. KAR extracts the A field from PARE records; KDR
extracts the D field. SET-KDR! is defined to be a procedure of two
arguments that assigns the D field of its first argument to its second
argument. (There is no way to assign the A field of PARE records.)
Here is a sample interaction: