			     -*- Text -*-

            $Id: README,v 1.1 1998/03/16 07:59:28 foner Exp $

			      STRING-OPS
			      ==========

A collection of misc. procedures that operate on strings.  See the
file string.doc for a description of all the available procedures.
Why are there so many procedures?  Well, the aim is to produce general
functions that are useful, but also to make available more efficient
routines if only a subset of the functionality is required.  This
allows you to quickly use the general routines and then successively
replace them with more specialised versions if the are a bottleneck.


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

Aubry Jaffer's Scheme, version 4a11


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

For the most part, the package is written in IEEE Scheme.  The
deviations from this are the use of REQUIRE and CHAR-SETs.  Neither
are included in this package.

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 string??.scm
	do
		sed '/^(require/d' < $file
	done > string.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 string.map may help in locating procedures.  For each
  procedure it contains the file in which it is defined.


CHAR-SETs

  Certain procedures require CHAR-SETs which are specialised sets for
  holding characters.  A portable implementation is available from the
  Scheme Repository.


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

To test most of the procedures defined in the package load the file
`stringt01.scm' and call STRING:TEST.  If there are any errors, a
message indicating the procedure which is faulty should be displayed.


Author
------

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