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/