 
 (defn weigh
   "The accumulated measurement of all children to the right
+
 Provided that Treeish-2-3 is implemented for seq.
 In other words: What a new Treeish-2-3 node would weigh with seq as its left child."
   [seq]

(def *leaf-cutoff-length* 64) ; This value has been determined optimal for split operations through benchmarking. TODO make constant in clojure 1.3

(defprotocol Measurable
  "Trivial protocol for things measurable.
Default implementations are provided for nil and String; nil measures as 0
characters, 0 lines. Strings get analyzed accordingly."
  (measure [object] "Measure object"))

  (apply str (->> (rope-seq root) (filter string?))))

(defn rebalance
  "Rebalanced copy of the Rope provided

Using the algorithm described in \"Ropes: an Alternative to Strings\".
The implementation does not resemble the one from the paper, but is instead
idiomatic Clojure and optimized for functional languages in general."  [root]
  (let [fold (fn [coll] (reduce rope (reverse coll)))
