func binary_search(a, i) { var l = 0 var h = a.end while (l <= h) { var mid = (h+l / 2 -> int) a[mid] > i && (h = mid-1; next) a[mid] < i && (l = mid+1; next) return mid } return -1 }