anchor.diff:  ;;;   - use heap-based stack for very deep ropes
   
   (deftype rope ()
  -  `(or string symbol rope-node null))
  +  `(or string symbol rope-node character null))
   
   (defconstant +rope-newline+
     '|
  
positive.code:     (rope-node (rope-node-length rope))
      (simple-string (length rope))
      (string (length rope))
      (symbol (length (symbol-name rope)))))
  
  (defun %rope-cat (first second)
    (make-rope-node :length (+ (rope-length first)
  
negative.code:                           (rec (rope-node-right rope)))
                 (simple-string (write-sequence rope stream))
                 (string (write-sequence rope stream))
                 (null nil)
                 (symbol (write-sequence (symbol-name rope) stream))
                 (character (write-char rope stream))
                 (sequence (map nil #'rec rope)))))
      (declare (dynamic-extent #'rec))
      (if escape
          (progn (write-char #\" stream)
                 (rec rope)
                 (write-char #\" stream))
          (rec rope)))
    (values))
  
  (defvar *rope-print* :rope
    "How to print ropes, one of (or :rope :string :structure)")
  