binary search

// assume it's ordered
function bs_list(haystack: number[], needle: number): boolean {

  if (haystack.length === 0)
    return false

  const i = Math.floor(haystack.length/2)
  const mid = haystack[i]

  if (mid === needle)
    return true
  else if (needle < mid)
    return bs_list(haystack.slice(0, i), needle)
  else
    return bs_list(haystack.slice(i+1, haystack.length), needle)
}