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