Next: , Previous: , Up: expander lexenv prim   [Index]


15.3.4.10 Primitive syntactic bindings: core condition–object record–type names

A syntactic binding representing R6RS’s condition object record–type name defined by the boot image has descriptor with one of the formats:

($core-condition-object-type-name
  . #(?type-name ?uid
      ?rtd-name ?rcd-name
      ?parent-name
      ?constructor-name ?type-predicate-name
      ?accessors-avector))

where the values are:

?type-name

A symbol representing the public name of the type.

?uid

A symbol representing a unique identifier for the type.

?rtd-name

A symbol representing the public name of the syntactic identifier to which the record–type descriptor is bound.

?rcd-name

A symbol representing the public name of the syntactic identifier to which the default record–constructor descriptor is bound.

?parent-name

#f or a symbol representing the public name of the syntactic identifier bound to the parent’s record-type.

?constructor-name

A symbol representing the public name of the syntactic identifier to which the default constructor is bound.

?type-predicate-name

A symbol representing the public name of the syntactic identifier to which the type predicate is bound.

?accessors-avector

An association vector having: as keys symbols representing field names; as values symbols representing the public name of the syntactic identifier to which the safe field accessor is bound.

As example, for the definition:

(define-condition-type &who
    &condition
  make-who-condition who-condition?
  (who condition-who))

the following descriptor is generated:

($core-condition-object-type-name
  . #(&who vicare:scheme-type:&who
      &who-rtd &who-rcd &condition
      make-who-condition who-condition?
      #((who . condition-who))))