HaloO, Autrijus Tang wrote:
If I'm mistaken, please let me know, preferably by suggesting new arrangements on the diagram. :-)
Without judging your mistakes, here are my comments to the container picture. 1) I would move the ::name to the Pad level. The idea is that ::name is some less specific supertype of the Fantastique Four ($&@%) if more than one of them exists on the container level. 2) I don't understand why you need two levels of indirection firstly the container and then the cell. Not to mention the third one to the tied thingy. 3) Why is the link from the container labeled with := but the link between the cell and the value with =? I would consistently dispatch *all* operators including :=, = and =:=. Preferably at compile/check time. Container types are then on the same level as any other parametric type. This "naturally" explains why your "is IType" can be changed like underwear. For the type system it is just another mutator. Whatever it does to the tied object takes effect only by changing the type and hence the methods which are applicable. -- ::TSa.greeting := "HaloO"; # mind the echo!