anchor.diff:        (genericize-vec-op form 'raw-vec-address (unquote tag) (unquote scale)))
       (define-simplify ((unquote (compound-symbol "primitive-" name "-ref"))
                         attrs vec index)
  -      (genericize-vec-op form 'vec-ref (unquote tag) (unquote scale)))
  +      (genericize-vec-op form 'vec-ref (unquote tag) (unquote scale))
  +      (overwrite-form form ((unquote from-vec-rep) (copy-list form))))
       (define-simplify ((unquote (compound-symbol "primitive-" name "-set!"))
                         attrs vec index val)
  +      (rplaca (cddddr form) ((unquote to-vec-rep) val))
         (genericize-vec-op form 'vec-set! (unquote tag) (unquote scale)))
       (define-simplify ((unquote (compound-symbol "primitive-" name "-copy"))
                         attrs src src-index dst dst-index len)
  
positive.code:                                                (unquote tag) (unquote scale)))
        (simplify form)))))
  
  (define-vector-type string string-tag char-scale)
  (define-vector-type vector vector-tag value-scale)
  
negative.code:                          (quote -1))
                        (ref (unquote len-name))))))))
  
  (defmarco (define-vector-type name tag scale from-vec-rep to-vec-rep)
    (quasiquote (definitions
      (define-simplify ((unquote (compound-symbol "make-" name)) attrs len)
        (genericize-vec-op form 'make-vec (unquote tag) (unquote scale)))
  