			     -*- Text -*-

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

			    Character Sets
			    ==============

A character set is, as its name might suggest, a set for storing
characters.  Such sets are often particularly useful in string
processing applications.  The reason for treating sets of characters
in a special manner is that until the advent of UNICODE and ISO ???,
character sets only contained a maximum of 255 characters and so this
fact could be taken advantage of in an implementation.  The usual
approach being to store a character set as a bit set.

Note,

1. Bitsets are not used since Scheme does not have them.  This
   implementation actually stores the char-set as a vector of booleans
   which are unlikely to be optimised to a bitset due to the way the
   code is written, hence :-

2. This code has been written with too much knowledge of vectors built
   in.  Sometime, I should re-write this so that it has an abstract
   interface.  This would allow you to (fairly) easily change the
   implementation without having to modify all the functions.

3. The code was written in ignorance of the MIT version of characters
   sets and hence probably contains gratuitious incompatibilities.


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.

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

Author
------

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