I was surprised to find the following...

irb(main):001:0> {:a => 'a', :b => 'b'}
=> {:a=>"a", :b=>"b"}
irb(main):002:0> {:a => 'a', :b => 'b', :c => 'c'}
=> {:a=>"a", :b=>"b", :c=>"c"}
irb(main):003:0> {:a => 'a', :b => 'b', :c => 'c', :d => 'd'}
=> {:a=>"a", :d=>"d", :b=>"b", :c=>"c"}
irb(main):004:0> {:a => 'a', :b => 'b', :c => 'c', :d => 'd', :e => 
'e'}
=> {:a=>"a", :d=>"d", :b=>"b", :e=>"e", :c=>"c"}
irb(main):005:0> {:a => 'a', :b => 'b', :c => 'c', :d => 'd', :e => 
'e', :f => 'f'}
=> {:a=>"a", :d=>"d", :b=>"b", :e=>"e", :c=>"c", :f=>"f"}

I expected that the sequence of hashes returned would be identical in 
order to the presented sequence.  Or, that there would be some 
discernable sequence such as if a stack, if not as a queue.

I realise that it is a hash and that access is expected to be by key, 
but sometimes retaining the presented order may be desired.  And 
anyway, why reorder it at all?

Furthermore, the returned order is different from a previous sequence 
I did!  So, it appears that this is somewhat random, however unlikely 
that it is.

I then assumed that there might be some kind of optimisation going on, 
but how much optimisation of {:a => 'a', :b => 'b', ... } can there 
be?

It doesn't seem very PoLS to have it reordered, although perhaps one 
shouldn't be surprised that a hash is unordered?  Perhaps Matz is 
convincing us of this statement?  Said Matz unto the flock in a loud, 
Godly voice: "Make no assumptions about the order of hashes!"

And would eval %{ instance_of_hash[instance_of_fixnum] } really be so 
evil?  Perhaps that was a little obscure...  What's wrong with ordered 
access, using a numeric element reference as with Array, to Hash?  
Excepting that the order can't be relied upon, but assume that it 
could.  Even simpler might have been to give an example:

h = {:a => 'a', :b => 'b'}
h[0]
=> 'a'

Similarly one might be able to treat an Array like a Hash as in eval 
%{ instance_of_array['instance_of_string_representation_of_a_fixnum'] 
}, such as with:

a = [ 1, 2 ]
a['0']
=> 1

There's no great call for the immediately above I would think, but if 
I implemented one then I would implement the other also, simply for 
the purposes of symmetry.  I'm not even sure there is any need for 
either, such that I may be trying to achieve the unnecessary?...

Even so, would some unwritten law be being broken if I did this stuff?