There's been a move towards implementing sets, bags, red-black trees and
other specialised data structures, like Smalltalk's extensive collection.

Before we go down this path, I would like to ask whether this is a good
idea or not...

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.

Yes, sometimes there's a bit of shoe-horning or overkill that another
data structure would help tidy up, but it also means that the standard
operations, including the ones in my head, will work. I don't have to
race off to learn yet another API for yet another class.

Better yet - it limits the number of APIs I have to race off and learn
to try and read code from another programmer. I've already been forced
to learn all the APIs covered in the PickAxe book... because every one
of you out there refuses to stick to only the APIs I wanna know!

If even more classes are added, then even more of you are going to use
even more classes and I'll be forced to run around even more to try and
understand Ruby code. I really just want to be able to look at what is
going on, even if it's not the most efficient way to do it. I spent far
too many years devoted to the cult of optimisation and my brain burnt
out on the byzantine labyrinths of supremely perfected code.

So yes, sets and bags and all that stuff would be better, but I think
it would be better for the computer. Ruby's the first language I've
seen in a while that goes out of its way to be kind to the human too.

If you're so keen on a specific obscure data structure, then by all
means go ahead and implement it. At least this keeps the infection of
API complexity limited to your one program, rather than forcing me to
learn because it's in the standard and too many people are using it.

If there comes a point that there's a pressing need for a new way of
accessing data, I would welcome the addition of a new super-type that
can handle the needs of all the lesser data structures. Maybe a Hash
on steroids. Maybe something else entirely.

Then Ruby stays conceptually small and useful.

-- 
  spwhite / chariot.net.au