code: function (target, array) {
      var start = 0
      var length = array.length
      while (length > 0) {
        var half = length >> 1
        var middle = start + half
        if (array[middle] <= target) {
          length = length - 1 - half
          start = middle + 1
        } else {
          length = half
        }
      }
      return start - 1
    }
docs: /*
  Binary Search:
  Assumes that @arg array is sorted increasingly
  return largest i such that array[i] <= target; return -1 if array[0] > target || array is empty