John Carter wrote: > Hmm. David's proposal and Nicolas's counter example got me thinking. > > For example, the required methods, eg. "each" need not be provided by > the cocktail, but possibly by another mixin included into the cocktail. > > However, it is something that could be checked by the invariant of the > class. In fact, it's not a class invariant but a Class.invariant... if > you get my meaning. In fact you could get away with checking it once > at the start of the constructor. That seems very anti-duck. I see no reason why an Object's meaning could not change over the life of the object -- at one point Enumerable and at another point not. Also, thanks method_missing, an object need not declare that it responds to #each. Devin