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]