Ara, >> ruby -v -e "p(('1'..'10').to_a)" >> ruby 1.8.2 (2004-12-25) [i386-mswin32] >> ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"] >> >> This shows a clear and unique mapping of the range >> '1'..'10' into a set of strings. > > but where do '01', '001', and '0001' go? they too, > are in the set of strings. You completely lost me there. '01' doesn't *go* anywhere. That string is not in the range '1'..'10', in the same way the 'x' is not in the range 'a'..'n'. Don't let the fact that my example used strings that look like numbers confuse the issue. The issue is that a range of strings that can be converted into a finite set, has a method to test for membership in that range, that doesn't match values that are in the set. Wow, that sentence is even hard for *me* to follow. OK, let's take a different example to avoid all discussion of integers and various string representations of them. >ruby -v -e "p(('a'..'aa').to_a)" ruby 1.8.2 (2004-12-25) [i386-mswin32] ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "aa"] Here we have a string range that has 27 "members". Now: >ruby -e "p(('a'..'aa').member?('a'))" true >ruby -e "p(('a'..'aa').member?('b'))" false ... >ruby -e "p(('a'..'aa').member?('z'))" false >ruby -e "p(('a'..'aa').member?('aa'))" true Can this really be called correct behavior of the member?() method? I can't see any tenable argument to say that it is. - Warren Brown