Cyrus Hall wrote:
> On Wed, 2006-08-02 at 23:24 +0900, Nuralanur / aol.com wrote:
>>> The current Range class in ruby is quite useful, however, I was  recently
>>> trying to capture a simple algorithm and ended up needing to  express
>>> left-exclusion.
>>  
>> Can you tell me what that algorithm was ? It may be blindness, but
>> at the moment, I do not understand in what circumstances one might
>> need such a feature, whereas applications for right-exclusion are  obvious
>> to me ...
> 
> Sure thing.  I'm working on a simulation environment for various
> Distribute Hash Table (DHT) algorithms.  It is common for such
> algorithms to define the key-space a node is responsible for as 
> 
> (n, n.successor]
> 
> While it is often okay to just use [n, n.successor] (which is what I'm
> currently doing), it would be nice to feel the implementation followed
> from theory.
> 
> I don't mean to make this sound like a critical issue, just a general
> query. :-)

The simplest thing you can always do is to create a method that (and 
optionally a special range class if you like) implements this as syntax 
modifications are always difficult.  If you do

module Kernel
   private

   def lor(r)
     r.exclude_end? ? r.first.succ ... r.last : r.first.succ .. r.last
   end
end

You can do

irb(main):030:0> for i in lor 1..10 do puts i end
2
3
4
5
6
7
8
9
10
=> 2..10
irb(main):031:0> for i in lor 1...10 do puts i end
2
3
4
5
6
7
8
9
=> 2...10
irb(main):032:0>

Kind regards

	robert