From: "thoran@..." Date: 2006-08-22T10:47:42+09:00 Subject: Re: Why Does Hash Apparently Reorder Its Internal Representation And Other Associated Ponderings Sorry for the poor attempt at quoting and the ignorance of the convention, but my mail client seems to be crapping out at the size of the ruby-talk mailbox!?... As to the following: "Well, to be fair, you did more than this. You suggested that, perhaps, hashes are actually ordered and that none of us really knows what a hash is... You also accused it of not following the PoLS, which many Ruby programmers feel strongly about. Considering people's knowledge of hashes, even outside the context of Ruby, and your self proclaimed ignorance (although this was not in your original post), these are bold statements and are bound to illicit bold responses." I wrote: "It doesn't seem very PoLS to have it reordered, although perhaps one shouldn't be surprised that a hash is unordered?" This is not a bold statement. I don't understand how you could have understood that as a suggestion that "hashes are actually ordered"? It looks more like a question to me and reeks of doubt as to whether my (increasingly formerly held) expectation was correct or reasonable... More generally: I assume that something works as it should, then ask why I might be wrong first. That is what I was doing. If after having considered what design decisions are entailed, I might start to consider that something is wrong. I hadn't gotten to this point yet. Perhaps I was expecting more of an ordered associative array as someone else suggested that it might be called if such a thing were to exist. As to one's ignorance. I think that the beginner's mind should be one's default starting position at all times, since it allows one to critique one's self more readily. Such is imbued with a calm doubt. As to the following: "Personally, I feel you are misunderstanding the PoLS but I've already addressed that in another post." As you wrote, if I'm surprised that rand() produces different numbers, then I am still surprised. The question is as to whether it is reasonable to be surprised. What is the base of expectations? What is a reasonable expectation of what hashes will and won't do? More generally: Also, to whomever said that that I had said or implied as much, I never made the claim that Matz had used the term PoLS. I may have made that claim, given or having taken the opportunity to do so, but I haven't. I am not inclined to 'dumb down' Ruby. If I wanted to be straight-jacketed or kept out of the drawer with all the sharp knives, then I'd be using Python. (That there IS a bold statement.) So, if the use of the {} notation for Hash is not to include ordering because on balance it is preferred for reasons of speed/size not to include ordering and because it is reasonable to expect that a hash won't by default be ordered, then OK. Ruby must balance power with simplicity, and elegance with complexity.