>>>>> "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