At 03:58 AM 10/15/98 -0400, Tyler wrote:
>client to be able to comply. This means that you don't have to rack your
>brain to come up with just the right hierarchy to represent all possible
Hmmm... It now occurs to me that, given the type of method dispatch in E, that E could do without inheritance completely. It seems to me that the purpose of inheritance is threefold. First, to create compatible types, second, as an agent of reuse and, third, to allow the compiler to construct function tables. In E, the first point is irrevelant, since E is untyped (or fully parameterized), so all types are compatible. On the second count, it has long been argued that aggregation is the more powerful tool (an argument I strongly agree with). The third point is also irrevelant because the type of method dispatch that E uses means that E will never be able to use function tables anyway. (At the very best, E will have to use some form of hashtable such as a wire.)
Well, here's a vote for doing away with inheritance. Wow, think of the millions of hours of developer time spent trying to create inheritance tree taxonomies. Talk about a simple yet powerful language!