Wiki
Download
Manual
Eggs
API
Tests
Bugs
show
edit
history
You can edit this page using
wiki syntax
for markup.
Article contents:
== Outdated egg! This is an egg for CHICKEN 3, the unsupported old release. You're almost certainly looking for [[/eggref/4/records|the CHICKEN 4 version of this egg]], if it exists. If it does not exist, there may be equivalent functionality provided by another egg; have a look at the [[https://wiki.call-cc.org/chicken-projects/egg-index-4.html|egg index]]. Otherwise, please consider porting this egg to the current version of CHICKEN. [[tag: egg]] == records This extension provides a procedural interface to create records, similar to the {{define-record}} and {{define-record-type}} ([[http://srfi.schemers.org/srfi-9|SRFI-9]]) constructs. === 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 [[/users/felix winkelmann|felix winkelmann]] === License Public domain === History ; 1.0 : Initial release
Description of your changes:
I would like to authenticate
Authentication
Username:
Password:
Spam control
What do you get when you add 20 to 0?