anchor.diff:                 (+ i (length rope)))
                (visit (rope i)
                  (etypecase rope
  +                 (rope-node
  +                  (visit (rope-node-right rope)
  +                         (visit (rope-node-left rope) i)))
                    (simple-string
                     (visit-string rope i))
                    (string
                     (visit-string rope i))
  -                 (symbol
  -                  (visit-string (symbol-name rope) i))
  -                 (rope-node
  -                  (visit (rope-node-right rope)
  -                         (visit (rope-node-left rope) i)))
  -                 (null))))
  +                 (null i)
  +                 (symbol (visit-string (symbol-name rope) i))
  +                 (character
  +                  (setf (schar string i) rope)
  +                  (1+ i)))))
         (declare (dynamic-extent #'visit-string #'visit))
         (visit rope 0))
       string))
  
positive.code:                           (rec (rope-node-right rope)))
                 (simple-string (write-sequence rope stream))
                 (string (write-sequence rope stream))
                 (symbol (write-sequence (symbol-name rope) stream))
                 (sequence (map nil #'rec rope)))))
      (declare (dynamic-extent #'rec))
      (if escape
          (progn (write-char #\" stream)
                 (rec rope)
                 (write-char #\" stream))
          (rec rope))))
  
  (defvar *rope-print* :rope
    "How to print ropes, one of (or :rope :string :structure)")
  
negative.code: (defmethod object-rope ((object rope-node))
    object)
  
  (defmethod object-rope ((object character))
    object)
  
  (defmethod object-rope ((object symbol))
    object)
  
  (defun rope-map (function sequence
                   &key
                     (start 0)
  