> 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.