anchor.diff:       (rope-list-cat (loop for rest = list then (cddr rest)
                          while rest
                          collect (%rope (first rest) (second rest)))))))
  +
  +(declaim (ftype (function (array &key
  +                                 (:start fixnum)
  +                                 (:end fixnum))
  +                          rope)
  +                rope-array-cat))
   
   (defun rope-array-cat (array
                          &key
  
positive.code:   (left nil :type rope)
    (right nil :type rope))
  
  (defun rope-length (rope)
    (etypecase rope
      (rope-node (rope-node-length rope))
  
negative.code:                               :left first
                                :right second))))))
  
  (declaim (ftype (function (list) rope) rope-list-cat))
  (defun rope-list-cat (list)
    (cond
      ((null list)
  