anchor.diff:                                                 (unquote tag) (unquote scale)))
         (simplify form)))))
   
  -(define-vector-type string string-tag char-scale)
  -(define-vector-type vector vector-tag value-scale)
  +(define-vector-type string string-tag char-scale
  +                    (lambda (form) (list 'raw->fixnum () form))
  +                    (lambda (form) (list 'fixnum->raw () form)))
  +(define-vector-type vector vector-tag value-scale identity identity)
  
positive.code:                          (quote -1))
                        (ref (unquote len-name))))))))
  
  (defmarco (define-vector-type name tag scale)
    (quasiquote (definitions
      (define-simplify ((unquote (compound-symbol "make-" name)) attrs len)
        (genericize-vec-op form 'make-vec (unquote tag) (unquote 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)
  