CLOS only allows dispatch on classes and not types, because there is no hierarchy in types.<p>For example, if you have a method specializing on the type (satisfies a) and a method specializing on the type (satisfies b), and you call a generic function with an object that satisfies both a and b, which method should be called first?<p>Or methods specializing on the types (integer 0 8) and (integer 1 9). If the argument is 5, which type is more specific?<p>Classes are a subset of types with a certain hierarchy, so there is always a &quot;correct&quot; order for methods to be called in.