;; Iterative binary chop

(defun chop (array n)
  (let ((low 0)
        (high (array-dimension array 0)))
    (loop while (> (- high low ) 1) do
         (let ((halfway (floor (/ (+ low high) 2))))
           (if (< n (aref array halfway))
               (setf high halfway)
               (setf low halfway))))
    (if (= (aref array low) n)
        low
        -1)))