From: Logan Capaldo Date: 2005-05-06T07:22:09+09:00 Subject: .. and ... aren't operators, maybe they should be? I was just wondering if maybe the range construction syntax could be implemented as a set of operators? ie class Object def ..(other) Range.new(self, other) end def ...(other) Range.new(self, other, true) end end This wouldn't implement the parser much (I don't think any way) and it could be useful for things like defining inifinite lazy lists, or other ranges with weird natures ie class InfRange attr_reader :first def take(n) i = self.first 1.upto(n) { yield(i); i = i.succ } end def initialize(n) @first = n end end class Fixnum def ..(other) if other.nil? InfRange.new(self) else Range.new(self, other) end end def ...(other) if other.nil? InfRange.new(self) else Range.new(self, other, true) end end end (1..inf).take(5) do |x| p x end Ok thats a pretty silly example, but lets say succ was more complicated than just self + 1 Eh maybe I'm crazy and this is useless. Just seems to be in line with << and + etc. being changeable.