Extensions to SRFI-99
- The make-rtd constructor accepts four optional keyword arguments to be used after or instead of the optional parent type argument: #:parent can be used to specify the parent type, #:uid allows the explicit specification of a UID to implement non-generative records, #:sealed allows you to specify a flag preventing subtyping of the new record type if it is true and #:opaque allows you to specify a flag preventing access to the new record type descriptor through record-rtd if it is true.
- The procedure rtd-uid is provided to extract the UID used to tag instances of a record type.
- define-record-type passes additional optional arguments after the record type name through to make-rtd.
- Specific parts of the record type definition can be created separately using the macros define-record-constructor, define-record-predicate and define-record-field.
- Arbitrary record properties can be attached to record types using a special keyword argument #:property of make-rtd.
- define-record-printer is implemented in terms of record type descriptors instead of UIDs.
- The srfi-99-variants module, re-exported by srfi-99 like srfi-99-records, allows easy definition of variant types.