>> The possibility to _flatten_ something requires it to be an Array- >> duck, not an Enumerable-duck. That is why flatten is part of Array. >> Nobody should expect the result of Enumerable#select to be >> flattenable. > > Well, that's what we're discussing :-) I expect #select to return an > array, so it's flattenable. But now I think we're going in circles. Why, of all possibities, an Array? Why not an Hash or any other class that mixes in Enumerable? As I wanted to point out: The Array class is in no way a special Enumerable, but it is treated special by being the return type of some (!) Enumerable operations. See, not all Enumerables _are_ Arrays, it's the other way around. It may not make much of a difference in every day coding, but if you don't keep the two apart, then why not drop Enumerable alltogether and always mix Array in instead? There should be a reason Enumerable was introduced as opposed to include it's functionality in Array? Yours, Alexander