Next: expander lexenv prim btd, Previous: expander lexenv prim primitives, Up: expander lexenv prim [Index]
A syntactic binding representing the built–in Scheme object–types defined by the boot image has descriptor with format:
($core-type-name . #(?type-name ?uid-symbol ?parent-name ?constructor-name ?type-predicate-name ?equality-predicate-name ?comparison-procedure-name ?hash-function-name ?type-descriptor-name ?methods-avector))
where the values are:
A symbol representing the type name. For example <fixnum>
.
A unique symbol associated with this object–type.
A symbol representing the parent type of this type, or #f
if this
type has no parent.
Either: a symbol representing the public name of this object–type’s
constructor function (for example <vector>
has vector
as
constructor); #f
if this object–type has no constructor; #t
if this object–type has no constructor but the syntax new
is used to validate an already built value:
(new <fixnum> 1) ⇒ 1 (new <fixnum> "ciao") error→ invalid value
A symbol representing the public name of the object–type’s type
predicate function, or #f
if this type has no type predicate.
A symbol representing the public name of the object–type’s equality
predicate function, or #f
if this type has no equality predicate.
A symbol representing the public name of the object–type’s equality
procedure, or #f
if this type has no equality procedure.
A symbol representing the public name of the object–type’s hash
function, or #f
if this type has no hash function.
A symbol representing the public name of the object–type’s run–time
type descriptor; for example <fixnum>
has <fixnum>-ctd
(where ‘ctd’ stands for Core Type Descriptor).
An association vector having symbols as both keys and values:
#((?method-name . ?method-implementation-procedure) ...)
where each key is the name of an object–type’s method and each value is the public name of the method’s implementation procedure.
Next: expander lexenv prim btd, Previous: expander lexenv prim primitives, Up: expander lexenv prim [Index]