> It seems to me that much of the power of Ruby comes from the ability of > code to communicate with each other. This stems from the re-use of > common constructs - strings, arrays and hashs - for everything. That is certainly true. Logically, the only reason one would want to have any of the sorts of data structure you've mentioned would be if you had some specific requirement that was fulfilled by one of them. Now, if the requirement is so specific then it's very likely that it doesn't map to any of the standard APIs. Obviously, the decision to use a very specific data structure like this should be made based on the fact that none of the standard ones you've mentioned (strings, hashes etc.) provide what you want. I don't think there's any reason NOT to create such data structures, just so long as people continue to use the more general ones where possible. If one can provide equivalent interfaces (eg each) for these data structures then they should be given them. But in the case where the only interfaces one is using are also provided by more "standard" data structure, one would have to question whether it makes sense to be using the more esoteric one.