>> So a function that converts a list like
>> ((Cls1) (Cls2))
>> (Top1 Top2)
>> ((Cls1) NIL)
>> (Top1 T)
>> should do.
> I'll have to think about it. Multiple inheritance complicates the
> whole thing so at first sight it seems too simple;-)
I don't think that would work. It is not enough to order by the "top
class". I think this problem is an example where a binary predicate
is better fit as it naturally expresses the programmers idea while a
unary weight would have to be computed somehow: assuming that a unary
weight always exists, I can imagine that it could be computed from the
binary predicate taking into account the size of the set being sorted;
however, computing it that way would be more complicated than passing
the binary predicate directly to the 'sort' function.
I still think it would be better if the 'sort' function had a second
optional argument to specify a binary predicate and the decision which
one to use should be "postponed" and left with an application
developer. And the C code would not be that much more complicated or
inefficient for the existing approach/code.