>>>>> "J" == Jonas Hoffmann <ruby / joelh.de> writes: J> Perhaps i dont understand the whole discussion but for me there is no point J> why range#size for integers or all the objekts with defined #succ are'nt J> inwolved anymore :( Because #succ can be destructive, a stupid example with 1.6.8 pigeon% cat b.rb #!/usr/bin/ruby class A attr_reader :a def initialize(x) @a = x end def succ @a.pop A.new(@a) end def >(x) a.size < x.a.size end def <=(x) a.size >= x.a.size end def <=>(x) a.size <=> x.a.size end end r = A.new([1,2,3,4,5]) .. A.new([1]) sz = r.size raise "error" if sz != r.size pigeon% pigeon% b.rb ./b.rb:29: error (RuntimeError) pigeon% Guy Decoux