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