rope ==== This is a straightforward Scheme implementation of Ropes. It's been built & tested on CHICKEN, Chibi, Gauche & Gambit, but should be easy to get working in any R5/R7RS-like implementation (use the `rope.sld` and `rope-r7rs.scm` files as a base). Installation ------------ To install for CHICKEN, use `chicken-install`: $ git clone git://bitbucket.org/evhan/rope.git $ cd rope $ chicken-install -test API --- empty-rope ; rope (current-maximum-leaf-length [integer]) ; parameter (rope [string ...]) ; => rope (string->rope string [start [end]]) ; => rope (rope->string rope [start [end]]) ; => string (rope? object) ; => boolean (rope=? rope1 rope2 [ropeN ...]) ; => boolean (rope-null? rope) ; => boolean (rope-length rope) ; => integer (rope-ref rope i) ; => character (rope-set! rope i char) ; => void (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 [length [port]]) ; => 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.