This directory contains the distribution of the Scheme Library slib1b.
Slib conforms to Revised^4 Report on the Algorithmic Language Scheme
and the IEEE P1178 specification.  Slib supports Unix and similar
systems, VMS, and MS-DOS.

The maintainer can be reached at jaffer@ai.mit.edu or
Aubrey Jaffer, 84 Pleasant St., Wakefield MA 01880.

			       MANIFEST

  `README' is this file.  It contains a MANIFEST, INSTALLATION
	INSTRUCTIONS, and proposed coding standards.
  `slib.1' is the unix style man page.
  `ChangeLog' documents changes to slib.

  `Template.scm' Example configuration file.  Copy and customize to
	reflect your system.
  `gambit.init' is a configuration file for Gambit Scheme.
  `mitscheme.init' is a configuration file for MIT Scheme.
  `scheme2c.init' is a configuration file for DEC's scheme->c.
  `require.scm' has code which allows system independent access to
	the library files.
  `require.doc' documents the functions in require.scm.

  `format.scm' has Lisp style format.
  `formatst.scm' has code to test format.scm
  `pp.scm' has pretty-print and pretty-print-to-string.
  `stdio.scm' has printf, fprintf, and sprintf compatible with C.
  `debug.scm' has qp, a printer save for circular structures, tracef
	and untracef for tracing function execution, and break and
	continue.

  `logical.scm' emulates 2's complement logical operations.
  `random.scm' has random number generator compatible with Common Lisp.
  `randinex.scm' has inexact real number distributions.
  `ratize.scm' has function rationalize from Revised^4 spec.
  `prime.scm' has prime? and factor.
  `charplot.scm' has procedure for plotting on character screens.
  `plottest.scm' has code to test charplot.scm.

  `record.scm' a MITScheme user-definable datatypes package
  `record.doc' documentation for record.scm
  `promise.scm' has code from R4RS for supporting DELAY and FORCE.
  `syntax.scm' is code for checking and matching Scheme syntax.

  `sc-macro.scm' is a syntactic closure R4RS macro package.
	r4rsyn.scm, synclo.scm, synrul.scm have syntax definitions
	and support.
  `macrotst.scm' is code from R4RS for testing macros.

  `sort.scm' has sorted?, sort, sort!, merge, and merge!
  `comlist.scm' has many common list and mapping procedures.
  `eval.scm' has eval.

  `sc4opt.scm' has optional rev4 procedures.
  `sc4-sc3.scm' has procedures to make a rev3 implementation run rev4
	code. 
  `sc2.scm' has rev2 procedures eliminated in subsequent versions.
  `sc3.scm' has rev3 procedures eliminated in subsequent versions.

		      INSTALLATION INSTRUCTIONS

Check the manifest to see if a configuration file for your Scheme
implementation has already been created.  If so, customize it and use
it.  If not, you will have to create one.  Please mail new working
configuration files to jaffer@ai.mit.edu so that they can be included
in the SLIB distribution.

Template.scm is an example configuration file.  The comments inside will
direct you on how to customize it to reflect your system.  Your
customized version should then be loaded as part of your scheme
implementation's initialization.  It will load "require.scm" from the
library; this will allow the use of provide, provided?, and require
along with the vicinity functions.  The rest of the library will then
be accessible in a system independent fashion.

			   CODING STANDARDS

All library packages are written in IEEE P1178 Scheme and assume that
a configuration file and require.scm package have already been
loaded.  Other versions of Scheme can be supported in library packages
as well by using (provided? 'rev3-report).

Require.scm defines *catalog*, an alist of module names and
filenames.  When a new package is added to the library an entry should
be added to vicintiy.scm.  Local packages can also be added to
*catalog* and even shadow entries already in the table.

The module name and `:' should prefix each symbol defined in the
package.  Definitions for external use should then be exported by
having (define foo module-name:foo).

Care should be taken that there are no circularities in the REQUIREs
and LOADs between the library packages.

Documentation should be provided either at the beginning of a library
file or in a separate file whose name has `doc' as a suffix rather
than `scm'.  For instance, the documentation for require.scm is in
require.doc.

