rope ==== This is a straightforward Scheme implementation of Ropes. It's built & tested on Chicken Scheme, but should be easy to get working in any R5/R7RS-like implementation (use `rope-r7rs.scm` as a base). Installation ------------ $ git clone git://github.com/evhan/rope.git $ cd rope $ chicken-install -test API --- empty-rope ; rope (current-maximum-leaf-length [integer]) ; parameter (rope [string ...]) ; => rope (string->rope string) ; => rope (rope->string rope) ; => string (rope? object) ; => boolean (rope=? rope1 rope2) ; => boolean (rope-null? rope) ; => boolean (rope-length rope) ; => integer (rope-ref rope i) ; => character (subrope rope start [end]) ; => rope (rope-append [rope ...]) ; => rope (rope-concatenate list) ; => rope (rope-reverse rope) ; => rope (rope-depth rope) ; => integer (rope-balanced? rope) ; => boolean (rope-balance rope) ; => rope (rope-fold f a rope1 [ropen ...]) ; => object (rope-for-each f rope1 [ropen ...]) ; => void (read-rope [port [length]]) ; => rope (make-rope-iterator rope) ; => procedure (open-input-rope rope) ; => port (open-output-rope) ; => port (get-output-rope [port]) ; => rope References ---------- * *Ropes, An Alternative to Strings* H. Boehm, R. Atkinson, M. Plass Software Practice and Experience 25, Dec 1995, pp. 1315-1330 * CL-Rope Peter Gijsels * rope.plt Danny Yoo * SGI Rope Implementation * data-rope Pierre-Etienne Meunier Author ------ Evan Hanson License ------- BSD. See LICENSE for details.