EQLspecializers convenient for smooth integration with object instantiation?
My original answer was simply that when you want to customize
make-instancefor a particular class of objects that you end up writing methods like this:
(defmethod make-instance ((class (eql (find-class 'foo))) ...This is doable without
EQLspecializers, but it would be kludgy.
While thinking about this some more, though, it occurred to me that
EQLspecializers are probably a necessary element for reflective programming.
When you reflectively program the object system, you operate at a meta-level where abstractions such as classes are reified as concrete instances of a meta-class. At the reflected level, object instances are no longer the data being manipulated. Instead, object classes are used to represent sets of instances, and the classes themselves are represented by instances of meta-class objects.
When you cross abstraction levels in this way, you need a set of level-shifting primitives. One of the most important of these is quotation. Quotation is level-shifting primitive that lifts (injects) an instance from beneath the abstraction level to the level itself.
EQLspecializers are the quotation mechanism for method dispatch.