Bug #8242


Fix rdoc of Range#bsearch

Added by yhara (Yutaka HARA) over 9 years ago. Updated about 9 years ago.

Target version:
ruby -v:
ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-darwin12.2.1]


rdoc of Range#bsearch states "the elements must be sorted", but it does not make sense for Range.


diff --git a/range.c b/range.c
index 1e4347e..fab0718 100644
--- a/range.c
+++ b/range.c
@@ -512,11 +512,10 @@ is_integer_p(VALUE v)

  • rng.bsearch {|obj| block }  -> value
  • By using binary search, finds a value in range which meets the given
    • condition in O(log n) where n is the size of the array.
    • condition in O(log n) where n is the size of the range.
    • You can use this method in two use cases: a find-minimum mode and
    • a find-any mode. In either case, the elements of the array must be
    • monotone (or sorted) with respect to the block.
    • a find-any mode.
    • In find-minimum mode (this is a good choice for typical use case),
    • the block must return true or false, and there must be a value x
      @@ -524,7 +523,7 @@ is_integer_p(VALUE v)
      • the block returns false for any value which is less than x, and
      • the block returns true for any value which is greater than or
    • equal to i.
    • equal to x.
    • If x is within the range, this method returns the value x.
    • Otherwise, it returns nil.

Updated by marcandre (Marc-Andre Lafortune) over 9 years ago

I understood "sorted" as a synonym of "monotone". The important part is "with respect to the block".

A range can be "sorted with respect to the block", in the same way an array can.

Note that although [-1, 0, 1] is sorted (with respect to <=>), it is not sorted with respect to {|x| x.abs}, for example.

Updated by zzak (Zachary Scott) over 9 years ago

  • Status changed from Open to Assigned
  • Assignee changed from mame (Yusuke Endoh) to marcandre (Marc-Andre Lafortune)
Actions #4

Updated by zzak (Zachary Scott) about 9 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r41026.
Yutaka, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.

Updated by nagachika (Tomoyuki Chikanaga) about 9 years ago

  • Backport set to 2.0.0: DONE

Also available in: Atom PDF