			     -*- Text -*-

  $Id: README,v 1.1 1998/03/16 07:57:11 foner Exp $

			       AVL Tree
			       ========

An AVL tree is a balanced binary tree.  This implementation is a pure
one i.e. adding an element to a tree is not done through side effects,
instead the tree is recreated around the inserted element.

See avl-tree.doc for a description of the available procedures.


Scheme implementations tested
-----------------------------

Aubry Jaffer's Scheme, version 4c0


Non-standard requirements
-------------------------

For the most part, the package is written in IEEE Scheme.  The
deviations from this are the use of REQUIRE.

REQUIRE

  Each of the files in the package contains zero or more REQUIRE calls
  at the start of the file indicating the procedures (not files) that
  the file needs.  Since most files only contain one procedure, this
  means that only those procedures that are actually needed are ever
  loaded (simplifies tree shaking).  If your REQUIRE system cannot
  deal with this type of request, then the simplest solution is to
  remove them all and simply merge all the files into a single file.
  For example, the following would work in a UNIX Bourne shell :-

	for file in avl-tree??.scm
	do
		sed '/^(require/d' < $file
	done > avl-tree.scm

  Note the ability to require a procedure rather than a file is the
  reason that the filenames in the package have uniformly boring
  names.  If you don't have a TAGS package that recognises Scheme,
  then the file avl-tree.map may help in locating procedures.  For each
  procedure it contains the file in which it is defined.


Regression Testing
------------------

To test most of the procedures defined in the package load the file
`avl-tree02.scm' and call AVL-TREE:TEST.  If there are any errors, a
message indicating the procedure which is faulty should be displayed.
Note the regression tests require the use of ERROR to report errors
and this is not IEEE/R4RS compliant.

Author
------

Stephen J. Bevan	<bevan@cs.man.ac.uk>	19931023
