7 Method Invocation

When classes are defined, you can specify the :method-invocation-order. This is a feature specific to EIEIO.

This controls the order in which method resolution occurs for methods in cases of multiple inheritance. The order affects which method is called first in a tree, and if cl-call-next-method is used, it controls the order in which the stack of methods are run.

The original EIEIO order turned out to be broken for multiple inheritance, but some programs depended on it. As such this option was added when the default invocation order was fixed to something that made more sense in that case.

Valid values are:

:breadth-first

Search for methods in the class hierarchy in breadth first order. This is the default.

:depth-first

Search for methods in the class hierarchy in a depth first order.

:c3

Searches for methods in a linearized way that most closely matches what CLOS does when a monotonic class structure is defined.

This is derived from the Dylan language documents by Kim Barrett et al.: A Monotonic Superclass Linearization for Dylan Retrieved from: https://doi.org/10.1145/236338.236343