SBCL supports a metaobject protocol which is intended to be compatible with AMOP; present exceptions to this (as distinct from current bugs) are:
metaobject
class is not present in the class
hierarchy;
standard-object
and funcallable-standard-object
classes are disjoint;
compute-effective-method
only returns one value, not two;
:around
method for compute-slots
specialized on funcallable-standard-class
does not respect the
requested order from a user-supplied primary method.
:declare
and :declarations
to
ensure-generic-function
are both accepted, with the leftmost
argument defining the declarations to be stored and returned by
generic-function-declarations
.