[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
I strongly agree with the statement that no one knows how to
do multiple inheritence "right". There is no one "right"
way. If CL-objects expect to gain adherents, they will have
to accomodate many different styles, on this and other issues
of fundamental design.
What should really be specified is a basic architecture for
message passing, method definition, flavor definition, and
local storage, in which it is possible to define symbolics'
current flavors as a special case.
To be a little more specific;
The underlying machinery has to deal efficiently with
two principal problems; Locating the correct method
to invoke in a message pass, and locating the correct
instance variable to use for local variable references.
Except that it makes no provision for class variables,
I would propose that Symbolics' primitives for these
are adequately robust and effecient, and so can serve
as a starting point for the "primitives" discussion.
The algorithms which (at "flavor construction" time)
determine which methods will be found, and which instance
variables will be accessed by these effecient primitives,
should be modifiable rather than wired in. The obvious
way to do this is to make them methods of a flavor.
We would predefine a "really basic flavor constructor"
flavor, which would itself allow no daemons or inheretance,
but which would have methods to construct flavors
of the more complex varieties, which would in turn
be used to construct the instances we ordinarily use.