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

(import 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

Repository

This egg is hosted on the CHICKEN Subversion repository:

https://anonymous@code.call-cc.org/svn/chicken-eggs/release/5/records

If you want to check out the source code repository of this egg and you are not familiar with Subversion, see this page.

License

Public domain

History

1.4
Ported to CHICKEN 5 [Kooda]
1.3
removed -host option from setup script
1.2
ported to CHICKEN 4
1.0
Initial release