2006/5/5, Logan Capaldo <logancapaldo / gmail.com>: > > On May 5, 2006, at 4:44 PM, Robert Klemme wrote: > > > The most notable exception I am aware of is this: > > > > irb(main):060:0> 2.eql? 2.0 > > => false > > irb(main):061:0> 2 == 2.0 > > => true > > > > A Hash uses eql? > > > > HTH > > > > robert > > Based on this I would amend your explanation with > > #eql? -- Equivalence with structure and type > #== -- Equivalence with structure > #equal? -- Identity I'd leave it at "equivalence" for == and eql? because for most types they behave the same. Basically every class's author is free what she considers "equivalence". Equivalence is a mathematical term with clear cut meaning and all implementations that satisfy these criteria are compatible with the std lib (Hash, Enumerable methods etc.) http://en.wikipedia.org/wiki/Equivalence_relation Kind regards robert -- Have a look: http://www.flickr.com/photos/fussel-foto/