How about... something completely different? (Re: [squeak-dev] Re: On traits composition)

Göran Krampe goran at krampe.se
Tue Dec 8 22:24:01 UTC 2009


Hi all!

Andreas Raab wrote:
> BTW, I really don't think there is much difference between mixins and 
> traits; all forms of MI are fairly equivalent.
> 
> Cheers,
>   - Andreas

As most of us I was also very positive when Traits first came to the 
scene. Now, I am a lot more jaded and think "well, sure, but are they 
worth it?".

Given Andreas' statement above - wouldn't it be *much* cooler to evolve 
Smalltalk along the axis of composition instead of the axis of inheritance?

I have always thought that having better mechanisms for delegation would 
be awesome, and would in most ways be much more powerful than 
inheritance (in whichever form).

For example, what if one could declare that for class Foo (having ivars 
x, y, z) any message that would result in a DNU would instead be 
"delegated" to ivar x (and then y if no lookup is found in x either).

This would be equivalent to tons of messages in Foo like:

Foo>>name
	^(x respondsTo: #name) ifTrue: [x name] ifFalse: [y name]

(well, kinda, you get the picture - but also, taking care of x/y 
returning "self" in which case we probably should return the "Foo self" 
instead etc)

In many ways the mechanism I am describing is "built into" languages 
like self and Slate (I think).

IMHO the above is very useful and would allow fine grained composition 
similar to Traits but in a dynamic more object centric fashion.

regards, Göran




More information about the Squeak-dev mailing list