anchor.diff:    (make-q :compare-fn compare-fn
             :set-index-fn set-index-fn
             :get-index-fn get-index-fn
  -          :items (make-heap)))
  +          :items (make-array size :element-type element-type :fill-pointer 0 :adjustable t)))
   
   (defun queue-empty-p (q)
     "Are there no items in the queue?"
  
positive.code: (defun heap-right (i) (declare (fixnum i)) (the fixnum (+ 2 i i)))
  (declaim (inline exchange))
  (defun exchange (heap a b set-index-fn)
    (rotatef (aref heap a) (aref heap b))
    (funcall set-index-fn (aref heap a) a)
    (funcall set-index-fn (aref heap b) b))
  
negative.code:   (when (queue-empty-p q)
      (error 'empty-queue-error))
    (let ((index (funcall (q-get-index-fn q) item)))
      (declare (fixnum index))
      (when (or (null index)
                (= index +not-in-queue+))
        (error 'item-not-found-error))
      (heap-delete (q-items q) index (q-compare-fn q) (q-set-index-fn q)))
      (funcall (q-set-index-fn q) item +not-in-queue+)
    q)
  
  ;;;; The Heap Implementation of Priority Queues
  
  (declaim (inline heap-parent))
  (defun heap-parent (i) (declare (fixnum i)) (floor (- i 1) 2))
  