I've read ri Object#== and seen how .eql? is usually the same as == except for numbers where type conversion takes place, and that for Object they must be distinct. Are there any rules, conventions, heuristics to aid in class design so that one may know when, and when not to def ==(x) eql?(x) end please? The objective is to make methods do what is expected given the rest of Ruby, so are the expectations one should have spelt out elsewhere? Thank you Hugh