anchor.diff:                           (quote -1))
                         (ref (unquote len-name))))))))
   
  -(defmarco (define-vector-type name tag scale)
  +(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)))
  
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:       (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))
        (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)
  