Matz,

> #include? used for range check, #member? was for set
> membership.  But since they have same functionality
> in Enumerable, some claimed having different
> behaviors in Range was confusing.  I agreed.
>
> All we need is making up good names for each
> functionality.

    OK, I think I see why they were changed to be the same, but I really
don't understand the choice of functionality that was kept.  For
everything except Ranges, #include? and #member? checks for set
membership.  In Ranges, #include? and #member? don't check for set
membership, they check for interval coverage instead.  This seems worse
than the original situation where at least #member? meant the same thing
everywhere.

    One other side note on the current names: "include" and "member" are
really opposite ideas.  A range includes a value, but a value is a
member of a range.  Having them mean exactly the same thing might also
be confusing.

    Anyway, could Range#include? and Range#member? be changed back to a
membership check and a new method be added to Range for interval
coverage, or would that break too much backwards compatibility?  Several
names come to mind for the new method: #between? (my personal favorite),
#betwixt? (kind of silly, but could be fun), #cover?, #surround?,
#bound?, #inside?, #within?, #in_range?, #in_interval?, #in?

    If the current behavior of the Range methods can't be changed, names
for membership checks (not including #member? - yuck!) could be:
#among?, #amid?, #amidst?, #component?, #constituent?, #part?, #has?,
#in?

    What do you think?

    - Warren Brown