Hello,

I have written a class, which includes the Comparable Mixin. I 
implemented the <=> operator in a way, which maps it to the <=> operator 
in integer if applicable and returning nil otherwise. (This is how I 
observed it in the Integer class [irb line 006]). I now expected the == 
operator in my class to behave exactly like the == in Integer. This 
works fine, while it is applicable (if the Modnums have the same base). 
But if I return nil (just like Integer <=> String) <= is fine [line 
009], but == behaves differently from what I expected. Why doesn't [line 
11] return false like [line 10] does? I thought == is supposed to return 
true or false, nothing else?

Thanks for your help,

Manuel

----------------------

irb(main):001:0> require "modnum.rb"
=> true

irb(main):002:0> a = 5
=> 5

irb(main):003:0> b = "Hallo"
=> "Hallo"

irb(main):004:0> c = Modnum.new(3,7)
=> #<Modnum:0x101ae1c8 @base=7, @value=3>

irb(main):005:0> d = Modnum.new(3,9)
=> #<Modnum:0x101a6c20 @base=9, @value=3>

irb(main):006:0> a <=> b
=> nil

irb(main):007:0> c <=> d
=> nil

irb(main):008:0> a <= b
ArgumentError: comparison of Fixnum with String failed
         from (irb):8:in `<='
         from (irb):8

irb(main):009:0> c <= d
ArgumentError: comparison of Modnum with Modnum failed
         from (irb):9:in `<='
         from (irb):9

irb(main):010:0> a == b
=> false

irb(main):011:0> c == d
=> nil