anchor.diff:    (:documentation "Signaled when an operation depends on an item that was not found in the queue."))
   
   ;;;; Basic Operations on Queues
  +
  +(defconstant +not-in-queue+ -1)
   
   (defstruct q
     (compare-fn nil :type function)
  
positive.code:   (when (queue-empty-p q)
      (error 'empty-queue-error))
    (let ((index (funcall (q-get-index-fn q) item)))
      (unless index
        (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 nil)
    q)
  
  ;;;; The Heap Implementation of Priority Queues
  
  (defun make-heap (&optional (size 100))
    (make-array size :fill-pointer 0 :adjustable t))
  
  (declaim (inline heap-parent))
  (defun heap-parent (i) (declare (fixnum i)) (floor (- i 1) 2))
  
negative.code:   (if (queue-empty-p q)
        (error 'empty-queue-error)
        (let ((min (heap-extract-min (q-items q) (q-compare-fn q) (q-set-index-fn q))))
          (funcall (q-set-index-fn q) min +not-in-queue+)
          min)))
  
  (defun queue-insert (q item)
  