This month Hakim Cassimally is presenting on Data Structures for Text Editors.   We're meeting on Monday 16th Jan in madlab at the normal time of 7pm.
To support the features that we need as programmers, text editors arrange textual data in rather different ways than we might expect from other text-processing tasks, where we commonly use strings and streams of characters.
We'll first look at some classic text editor data-structures like Lists of lines (vi, Atom), the Gap Buffer (Emacs), and then at purely functional data structures that fit better with functional languages - structures like Piece Tables (Abiword, Bravo), various sorts of tree (the infamous Xanadu, GtkTextBuffer) and Zippers (yi).
I'll be showing a few examples in Clojure, but the approaches are valuable in any language (I've done previous prototypes in Perl, Java, and Haskell!)