anchor.diff:        (enqueue form (%struct-single-get name (%struct-field-name (car i)) index)))))
   
   (defun %struct-p (name)
  -  (let ((sym (%struct-p-symbol name)))
  +  (with (sym (%struct-p-symbol name))
       `(defun ,sym (arr)
  -        (and (arrayp arr) (eq (elt arr 0) ,name)))))
  +       (and (arrayp arr) (eq (elt arr 0) ,name)))))
   
   (defun %struct-sort-fields (fields-and-options)
     "Split list into fields and options."
  
positive.code: 
  (defun %struct-name (obj)
    (if (not (arrayp obj))
      (%error "object is not a struct")
      (elt 0 obj)))
  
  (defun %struct-fields (name)
    (with-queue form
  
negative.code: 
  (defun %struct-field-name (field)
    (if (consp field)
        (car field)
        field))
  
  (defun %struct-single-get (name field index)
    (with (sym (%struct-getter-symbol name field))
      `(progn
        (defun ,sym (arr)
          (elt arr ,index))
  