But that assumes that the world devides nicely up into a single "subtype" taxonomy.No, it doesn't. Stop confusing inheritance with polymorphism.You've been told this time and time again.
Further, in Smalltalk and the like such dispatching is still made at run-time.And this is different from your "eval" how, exactly? Smalltalk optimizes its runtime dispatch to an extreme level that is possible only because of the meta-information provided by the classes. This is impossible with simple evals.