anchor.diff:        !.
         ($ "MAKE-" name)))
   
  -(defun %struct?-symbol (name)
  +(defun %struct-predicate-name (name)
     ($ name "?"))
   
   (defun %struct-field-name (field)
  
positive.code:                      ,argname))]
              fields)))
  
  (defun %struct-make (name fields options)
    (with (fname      (%struct-constructor-name name options)
  		 g          (gensym)
           user-init  (%struct-init fields g)
  
negative.code:     (filter [%struct-slot-accessors name (%struct-field-name _) (++! index)]
              fields)))
  
  (defun struct-predicate (x)
    (& (array? x)
       (eq 'struct (aref x 0))))
  
  (defun %struct-predicate (name)
    (let sym (%struct-predicate-name name)
      `(defun ,sym (x)
         (& (array? x)
            (eq 'struct (aref x 0))
  