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.