Any Scheme data object.
An instance of the OO system; an object.
The object system supports multiple inheritance. An instance can
inherit from 0 or more ancestors. In the case of multiple inherited
operations with the same identity, the operation used is that from the
first ancestor which contains it (in the ancestor
operation may be applied to any Scheme data object—not just instances.
As code which creates instances is just code, there are no classes
and no meta-anything. Method dispatch is by a procedure call a la
CLOS rather than by
send syntax a la Smalltalk.
There are a number of optimizations which can be made. This implementation is expository (although performance should be quite reasonable). See the L&FP paper for some suggestions.