A rope is a data structure used to represent strings. Ropes are typically implemented with B-trees of (possibly immutable) strings. The Tk [text] widget uses a B-tree to store textual data along with tags, so it's some sort of augmented rope, where each node has associated metadata. TIP #169 [http://tip.tcl.tk/169] (Add Peer Text Widgets), implemented in Tk8.5, already involved uncoupling the B-Tree from the widget. A native rope object type could be used to push this idea even further, by allowing data sharing outside of text widgets. For example, a comment dated 24Jan2004 on the [text] page expresses the wish to share this structure with [tdom]. The B-Tree code used in the [text] widget could serve as a basis for a rope object type, as the code is mature and widely tested. [Cloverfield] suggests that ropes be used in place of flat strings as the primary string representation in Tcl. Each substring node could have metadata attached. For example, the string representation of a proc body could point to the original sourced string, with metadata giving the file name. This could be used to generate meaningful stack traces with line numbers and file names. See also [Tcl9 and annotated strings]. See [http://www.cs.ubc.ca/local/reading/proceedings/spe91-95/spe/vol25/issue12/spe986.pdf] for a real-world implementation of ropes in C ("C Cords"). SGI provides a rope template class in its STL implementation [http://www.sgi.com/tech/stl/Rope.html]. ---- See also [Abstract Data Types]. ---- !!!!!! %| [Category Data Structure] |% !!!!!!