anchor.diff:         (defun ,aname (arr)
            (aref arr ,index))
          (defun (= ,aname) (val arr)
  -         (= (aref arr ,index) val)))))
  +         (= (aref arr ,index) val))
  +       ,@(!? (assoc :global options)
  +             `((defun ,fname ()
  +                 (aref ,.!. ,index))
  +               (defun (= ,fname) (val)
  +                 (= (aref ,.!. ,index) val)))))))
   
  -(defun %struct-accessors (name fields)
  +(defun %struct-accessors (name fields options)
     (let index 1
  -    (filter [%struct-slot-accessors name (%struct-field-name _) (++! index)]
  +    (filter [%struct-slot-accessors name (%struct-field-name _) (++! index) options]
               fields)))
   
   (defun struct-predicate (x)
  
positive.code: ; tré – Copyright (c) 2005–2009,2011–2014 Sven Michael Klose <pixel@hugbox.org>
  
  (defun %struct-option-keyword? (x)
    (eq x :constructor))
  
  (defun %struct-constructor-name (name options)
    (!? (assoc-value :constructor options)
  
negative.code: (defun %struct-accessor-name (name field-name)
    ($ name "-" field-name))
  
  (defun %struct-slot-accessors (name field index options)
    (with (fname  (%struct-field-name field)
           aname  (%struct-accessor-name name fname))
      `(progn
  