records

This extension provides a procedural interface to create records, similar to the define-record and define-record-type (SRFI-9) constructs.

To use this extension, execute

(require-extension records)

in your code. This extension provides the records module.

make-record-type

[procedure] (make-record-type type-name field-names)

Returns a "record-type descriptor", a value representing a new datatype disjoint from all others. The TYPE-NAME argument must be a symbol or a string. 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.

record-constructor

[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.

record-predicate

[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.

record-accessor

[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.

record-modifier

[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.

Authors

David Carlton, re-written by Aubrey Jaffer, ported to CHICKEN by felix winkelmann

License

Public domain

History

1.3
removed -host option from setup script
1.2
ported to CHICKEN 4
1.0
Initial release