A short time after I learned Smalltalk, I came across another effort to build a language out of objects, the Common Lisp Object System.

Here are the CLOS like objects we built atop of Smalltalk to implement our multimethods.

(Explain these, one by one…)

In fact, we went well beyond simple multmethods. The collection of metabojects we built is a surprisingly complete / comprehensive implementation of the CLOS MOP. The major missing elements are multiple inheritance, and around methods.

Choreographer is a better name for MethodCombination that is Method Combination. A number of the names are rather droll. Is this in part to blame for this works relative, and undeserved, obscurity?

The two mops coexist fairly harmoniously, especially in contrast with Java’s dueling type systems.

There is a potential synergy between these two mops that I regret to say remains undemonstrated to this day. Between the two of ‘em, they’ve nearly got the space covered. But that’s a talk for another day.