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