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