SRFI-99

Artifact [761d66c489]
Login

Artifact 761d66c48994f8e69b14bd34e0ccee3c65b40051:

Wiki page [extensions] by murphy 2012-02-02 22:41:26.
D 2012-02-02T22:41:26.245
L extensions
P deabf1ae0c2d78d6d9faa1400a630d9fb73fa809
U murphy
W 1414
<h1>Extensions to SRFI-99</h1>

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

Z e35e4926a531591ec00179dbcdf09c80