"Berger, Daniel" <Daniel.Berger / qwest.com> schrieb im Newsbeitrag news:8FE83020B9E1A248A182A9B0A7B76E7358B33F / itomae2km07.AD.QINTRA.COM... > > -----Original Message----- > > From: Joel VanderWerf [mailto:vjoel / PATH.Berkeley.EDU] > > Sent: Monday, March 21, 2005 10:02 PM > > To: ruby-talk ML > > Subject: unifying hash and proc syntax > > > > > > Hey, crazy idea. Why not use the same syntax for hashes and > > arrays? > > If Ruby had a "List" superclass from which Array and Hash descended, > instead of the Enumerable mixin strategy, this would have been easier I > think. Presumably (and I'm totally guessing here) a list would have > been anything between square brackets: > > [1,2,3,4].kind_of?(List) # true > [1,2,3,4].kind_of?(Array) # true > [1,2,3,4].kind_of?(Hash) # false > > [1 => 2, 3 => 4].kind_of?(List) # true > [1 => 2, 3 => 4].kind_of?(Hash) # true > [1 => 2, 3 => 4].kind_of?(Array) # false > > (I believe someone else proposed this syntax earlier.) Enumerable does serve the purpose of defining a common abstract interface already. Note also, that lists are usually ordered and their elements don't change positions unless explicit told to. This is not true for a Hash - at least not as it's implemented right now. Personally I dislike changing Hash to add the overhead of remembering insertion order as this is likely to slow down Hash typical operations. The other problem with a common superclass / mixin of Array and Hash is, that sometimes you want them treated similar (i.e. both have [] and []= and can be accessed indexed; you can view an Array as a specialized Hash that allows only Fixnum keys) and sometimes you don't. I still haven't seen something that would consolidate this better than Enumerable does. > This is more along the path that Perl took, where hashes and arrays are > both lists. Then the {} would then be free, FREE, to be used for > whatever nefarious purposes we could devise. The sole fact that you mention perl here makes the whole proposal suspicious to me. :-) I'd rather find a ruby solution than to look at other languages. > Not being a language designer, I have no idea if this is better or > worse, if the List superclass is really necessary (i.e. could we still > use a mixin strategy?), or if it would even be possible to implement in > Ruby 2.0. Personally I don't think we really need this change. Just my 0.02EUR... Kind regards robert