anchor.diff:  (defun %struct-getter-symbol (name field)
     (make-symbol (string-concat (symbol-name name) "-" (symbol-name field))))
   
  -(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))
  +  (let sym (%struct-getter-symbol name field)
       `(progn
         (defun ,sym (arr)
           (elt arr ,index))
  
positive.code: (defun %struct-fields (name)
    (with-queue form
      (dolist (i (%struct-def name) (queue-list form))
        (enqueue form (car i)))))
  
  (defun %defstruct-expander (name &rest fields-and-options)
    "Define new structure."
  
negative.code:          user-init (%struct-make-init fields g)
  	     type-init `((setf (elt ,g 0) ',name)))
      `(defun ,sym ,(%struct-make-args fields)
         (let ,g (make-array ,(1+ (length fields)))
           ,@(if user-init
  	           (nconc type-init user-init)
  	           type-init)
  