;; Recursive binary chop (defun chop (array n) (labels ((looper (low high) (let ((halfway (floor (/ (+ low high) 2)))) (cond ((< (- high low) 2) (if (= (aref array low) n) low -1)) ((< n (aref array halfway)) (looper low halfway)) (t (looper halfway high)))))) (looper 0 (array-dimension array 0))))