anchor.diff:                    (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)))
  
positive.code: (in-package :sycamore)
  
  (deftype rope ()
    `(or string rope-node nil))
  
  (defstruct rope-node
    (count 0 :type non-negative-fixnum)
  
negative.code:   (etypecase rope
      (rope-node (rope-node-count rope))
      (simple-string (length rope))
      (string (length rope))
      (symbol (length (symbol-name rope)))))
  
  (defun %rope-cat (first second)
    (make-rope-node :count (+ (rope-count first)
  