anchor.diff:  	          type-init)
   	     ,g))))
   
  -(defun %struct-accessor-name (name field)
  -  ($ name "-" field))
  +(defun %struct-accessor-name (name field-name)
  +  ($ name "-" field-name))
   
   (defun %struct-slot-accessors (name field index)
  -  (let sym (%struct-accessor-name name field)
  +  (with (fname  (%struct-field-name field)
  +         aname  (%struct-accessor-name name fname))
       `(progn
  -       (functional ,sym)
  -       (declare-cps-exception ,sym ,(=-make-symbol sym))
  -       (defun ,sym (arr)
  +       (functional ,aname)
  +       (declare-cps-exception ,aname ,(=-make-symbol aname))
  +       (defun ,aname (arr)
            (aref arr ,index))
  -       (defun (= ,sym) (val arr)
  +       (defun (= ,aname) (val arr)
            (= (aref arr ,index) val)))))
   
   (defun %struct-accessors (name fields)
  
positive.code:     (filter [%struct-slot-accessors name (%struct-field-name _) (++! index)]
              fields)))
  
  (defun struct? (x)
    (& (array? x)
       (eq 'struct (aref x 0))))
  
  (defun %struct? (name)
    (let sym (%struct?-symbol name)
      `(defun ,sym (x)
         (& (array? x)
            (eq 'struct (aref x 0))
  
negative.code:       !.
        ($ "MAKE-" name)))
  
  (defun %struct-predicate-name (name)
    ($ name "?"))
  
  (defun %struct-field-name (field)
  