> On Tue, Oct 01, 2002 at 03:43:22PM -0400, Trey Harris wrote: >> You want something like >> >> class Car is Vehicle renames(drive => accel) >> is MP3_Player renames(drive => mp3_drive);
I *really* like this, but would the above be better coded as: class Car is Vehicle renames(drive => accel) has MP3_Player renames(drive => mp3_drive); .... implying a "container" relationship with automatic delegation? Among the other considerations is that if you simply said class Car is Vehicle has MP3_Player; the inheritance chain could assume that Car.drive === Vehicle.drive, because is-a (inheritance) beats has-a (containment or delegation). If you needed to, you should still be able to call $mycar.MP3_Player.drive to DWYM, too. Along these lines, I'd love the ability to do something like: class Bird is Animal has (LeftWing is Wing) # a "named" Wing has (RightWing is Wing) has (LeftLeg is Leg) has (RightLeg is Leg); $bird.LeftWing.flap; # makes sense $bird.flap; # but what's this do? left, right, or _both_? $bird^.Wing.flap # perhaps too evil? :-) MikeL