A general sequence representation with arbitrary annotations, with example implementations of various collection types, as described in section 4 of Ralf Hinze and Ross Paterson, "Finger trees: a simple general-purpose data structure", Journal of Functional Programming 16:2 (2006) pp 197-217. http://www.soi.city.ac.uk/~ross/papers/FingerTree.html For a tuned sequence type, see Data.Sequence in the containers package, which is a specialization of this structure.