Bill,
Nicely written article. The Trait form is a nice alternative to decorators, I guess it has the disadvantage that if people do a lot of:
val queue = new BaseIntQueue with Filter
Then you will create a lot of classes unnecessarily. The decorator equivalent doesn't create the extra classes.
One thing that I don't like about either the decorator or trait version is the order dependence, it is far to easy to write (or edit in when maintaining a program):
val queue = new BaseIntQueue with Filter with Double
When you intended:
val queue = new BaseIntQueue with Double with Filter