From: mike.leddy@... Date: 2007-02-09T06:30:11+09:00 Subject: Ruby hash equlity Based on the description of Hash#== " Equality---Two hashes are equal if they each contain the same number of keys and if each key-value pair is equal to (according to +Object#==+) the corresponding elements in the other hash." I am having problems understanding the following: $ irb irb(main):001:0> VERSION => "1.8.5" irb(main):002:0> a={:c => nil, :d => nil} => {:c=>nil, :d=>nil} irb(main):003:0> b={:d => nil, :c => nil} => {:c=>nil, :d=>nil} irb(main):004:0> # As expected this is true irb(main):005:0* a == b => true irb(main):006:0> c={:a => nil, a => nil, :b => nil} => {:b=>nil, :a=>nil, {:c=>nil, :d=>nil}=>nil} irb(main):007:0> d={:b => nil, b => nil, :a => nil} => {:b=>nil, {:c=>nil, :d=>nil}=>nil, :a=>nil} irb(main):008:0> # Unexpectedly false irb(main):009:0* c == d => false Shouldn't they be equivalent ? Thanks, Mike