anchor.diff:                       ,argname))]
               fields)))
   
  -(defun %struct-make (name fields options)
  +(defun %struct-constructor (name fields options)
     (with (fname      (%struct-constructor-name name options)
   		 g          (gensym)
            user-init  (%struct-init fields g)
  
positive.code:     (%struct-add-def name fields)
      `(progn
         (declare-cps-exception ,name)
         ,(%struct-make name fields options)
         ,(%struct? name)
         ,@(%struct-accessors name fields)
         (defmacro ,($ "WITH-" name) (s &body body)
  		 `(with-struct ,name ,,s
  
negative.code: 	          type-init)
  	     ,g))))
  
  (defun %struct-accessor-name (name field-name)
    ($ name "-" field-name))
  
  (defun %struct-slot-accessors (name field index)
    (with (fname  (%struct-field-name field)
           aname  (%struct-accessor-name name fname))
      `(progn
         (functional ,aname)
         (declare-cps-exception ,aname ,(=-make-symbol aname))
         (defun ,aname (arr)
           (aref arr ,index))
         (defun (= ,aname) (val arr)
           (= (aref arr ,index) val)))))
  
  (defun %struct-accessors (name fields)
  