[syntax] define-record name (fld1 ...) ((fld2 init) ...) (opt ...)

ChezScheme: defines a record type. Appropriate constructor, predicate, field accessors and mutators are implicitly defined.

Chez also has an older mechanism that uses vectors as structures by define-structure.

See also make-record-type, record-type-descriptor?, record-constructor, record-predicate, record-field-accessor, record-field-accessible?, record-field-mutator, record-field-mutable?, record-type-name, record-type-field-names, record?, record-type-descriptor, record-reader?

SRFI-9 provides a similar structure, but with explicit naming of constructor, predicate and accessors, by define-record-type.

[syntax] define-record name slotname ...

Chicken: defines a record type. Constructor make-name, predicate name?, accessor name-slotname, modifier name-slotname-set! are defined. See also define-record-printer, record-case.