Issue #13933 has been updated by Dan0042 (Daniel DeLorme).
akr (Akira Tanaka) wrote in #note-12:
From experience with `Float::NAN`, I think it is not a
good idea to expand such objects.
It makes the behavior of `Array#<=>` inconsistent.
I agree but I think this is a bit different from what I was talking about. Float::NAN is a
float that is not comparable with other floats. This is not the same case as a value that
is not comparable with anything else.
There is no reason to break it.
I agree; as I said, I'm not suggesting we change this now.
Or maybe we
can define a range "r" as empty if `r.begin.nil? and r.exclude_end? and
r.end.respond_to?(:empty?) and r.end.empty?`
You ignored the user-defined classes I mentioned.
A user may define a class with a minimum value.
The minimum value may not have `empty?` method.
How do you define which is the minimum value? I suggested the above as a *posssible* way
to define the minimum value. So a custom class would need to have #empty? that returns
true in order to define "this is the minimum". But it was just a suggestion. Or
maybe each class could have a MINIMUM constant like `String::MINIMUM = ""`, etc.
More importantly, I think that `(...minimum).empty?` is such an edge case of an edge case
that it's not worth worrying too much. Are you suggesting that `Range#empty?` should
not exist just because it's not possible to perfectly handle this extreme edge case
for every possible class? Would it really be so bad if it returned `true` for user-defined
classes?
----------------------------------------
Feature #13933: Add Range#empty?
https://bugs.ruby-lang.org/issues/13933#change-104753
* Author: ted (Ted Johansson)
* Status: Open
* Priority: Normal
----------------------------------------
Range already responds to #size. It would be nice if it also responded to predicate
#empty? :-)
--
https://bugs.ruby-lang.org/