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