• == implements type coercion
  • eql? does not implement type coercion
  • Usually, implement eql? and let == delegate to eql?
  • equal? should not be overriden. Ruby checks in there if it’s really the same object, i.e. that the object IDs match (my_object.__id__).