200 lines
9.1 KiB
Plaintext
200 lines
9.1 KiB
Plaintext
This directory contains the distribution of Scheme Library slib2a2.
|
|
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.
|
|
`FAQ' Frequently Asked Questions and answers.
|
|
`ChangeLog' documents changes to slib.
|
|
`slib.texi' has documentation on library packages in TexInfo format.
|
|
|
|
`Template.scm' Example configuration file. Copy and customize to
|
|
reflect your system.
|
|
`chez.init' is a configuration file for Chez Scheme.
|
|
`elk.init' is a configuration file for ELK 2.1
|
|
`gambit.init' is a configuration file for Gambit Scheme.
|
|
`macscheme.init' is a configuration file for MacScheme.
|
|
`mitscheme.init' is a configuration file for MIT Scheme.
|
|
`mitcomp.pat' is a patch file which adds definitions to SLIB files
|
|
for the MitScheme compiler.
|
|
`scheme2c.init' is a configuration file for DEC's scheme->c.
|
|
`scheme48.init' is a configuration file for Scheme48.
|
|
`t3.init' is a configuration file for T3.1 in Scheme mode.
|
|
`vscm.init' is a configuration file for VSCM.
|
|
`require.scm' has code which allows system independent access to
|
|
the library files.
|
|
|
|
`format.scm' has Common-Lisp style format.
|
|
`formatst.scm' has code to test format.scm
|
|
`pp.scm' has pretty-print.
|
|
`ppfile.scm' has pprint-file and pprint-filter-file.
|
|
`obj2str.scm' has object->string.
|
|
`strcase.scm' has functions for manipulating the case of strings.
|
|
`genwrite.scm' has a generic-write which is used by pp.scm,
|
|
pp2str.scm and obj2str.scm
|
|
`stdio.scm' has printf, fprintf, and sprintf compatible with C.
|
|
`scanf.scm' has scanf, fscanf, and sscanf inspired by C.
|
|
`lineio' has line oriented input/output functions.
|
|
`debug.scm' has qp, a printer safe for circular structures and break
|
|
and continue.
|
|
`trace.scm' has trace and untrace for tracing function execution.
|
|
`test.scm' has routines useful for testing and reporting problems.
|
|
`strport.scm' has routines for string-ports.
|
|
|
|
`alist.scm' has functions accessing and modifying association lists.
|
|
`hash.scm' defines hash, hashq, and hashv.
|
|
`hashtab.scm' has hash tables.
|
|
`sierpinski.scm' 2-dimensional coordinate hash.
|
|
`soundex.scm' English name hash.
|
|
`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.
|
|
`prime.scm' has prime? and factor.
|
|
`charplot.scm' has procedure for plotting on character screens.
|
|
`plottest.scm' has code to test charplot.scm.
|
|
`tek40.scm' has routines for Tektronix 4000 series graphics.
|
|
`tek41.scm' has routines for Tektronix 4100 series graphics.
|
|
`getopt.scm' has posix-like getopt for parsing command line arguments.
|
|
`time.scm' has Posix time conversion routines.
|
|
`cltime.scm' has Common-Lisp time conversion routines.
|
|
|
|
`record.scm' a MITScheme user-definable datatypes package
|
|
`promise.scm' has code from R4RS for supporting DELAY and FORCE.
|
|
|
|
`repl.scm' has a read-eval-print-loop.
|
|
`defmacex.scm' has defmacro:expand*.
|
|
`mbe.scm' has "Macro by Example" define-syntax.
|
|
`scmacro.scm' is a syntactic closure R4RS macro package.
|
|
r4rsyn.scm, synclo.scm, synrul.scm have syntax definitions
|
|
and support.
|
|
`scmactst.scm' is code for testing SYNTACTIC CLOSURE macros.
|
|
`scainit.scm' is a syntax-case R4RS macro package.
|
|
scaglob.scm scamacr.scm scaoutp.scm scaexpp.scm have
|
|
syntax definitions and support. `syncase.sh' is a shell
|
|
script for producing the SLIB version from the original.
|
|
`macwork.scm' is a "Macros that work" package.
|
|
mwexpand.scm mwdenote.scm mwsynrul.scm have support.
|
|
mwtest.scm is tests for Macros that work.
|
|
`macrotst.scm' is code from R4RS for testing macros.
|
|
|
|
`values.scm' is multiple values.
|
|
`queue.scm' has queues and stacks.
|
|
|
|
`object.scm' is object oriented programming (using no macros).
|
|
`recobj.scm' is records implemented using object.scm.
|
|
`yasyn.scm' is a macro package implementing YASOS using object.scm.
|
|
|
|
`yasos.scm' is object oriented programming (using R4RS macros).
|
|
`collect.scm' is collection operators (like CL sequences).
|
|
`priorque.scm' has code and documentation for priority queues.
|
|
`rbtree.scm' has red-black trees.
|
|
`rbtest.scm' tests red-black trees.
|
|
`process.scm' has multi-processing primitives.
|
|
`array.scm' has multi-dimensional arrays and sub-arrays.
|
|
`arraymap.scm' has array-map!, array-for-each, and array-indexes.
|
|
|
|
`sort.scm' has sorted?, sort, sort!, merge, and merge!
|
|
`comlist.scm' has many common list and mapping procedures.
|
|
`tree.scm' has functions dealing with trees.
|
|
`chap.scm' has functions which compare and create strings in
|
|
"chapter order".
|
|
|
|
`sc4opt.scm' has optional rev4 procedures.
|
|
`sc4sc3.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.
|
|
`mularg.scm' redefines - and / to take more than 2 arguments.
|
|
`mulapply.scm' redefines apply to take more than 2 arguments.
|
|
`ratize.scm' has function rationalize from Revised^4 spec.
|
|
`trnscrpt.scm' has transcript-on and transcript-off from Revised^4 spec.
|
|
`withfile.scm' has with-input-from-file and with-output-to-file from R4RS.
|
|
`dynwind.scm' has proposed dynamic-wind from R5RS.
|
|
`dwindtst.scm' has routines for characterizing dynamic-wind.
|
|
`dynamic.scm' has proposed DYNAMIC data type.
|
|
`fluidlet.scm' has fluid-let syntax.
|
|
`struct.scm' has defmacros which implement RECORDS from the book:
|
|
"Essentials of Programming Languages".
|
|
`structure.scm' has syntax-case macros for the same.
|
|
`structst.scm' has test code for struct.scm and structure.scm.
|
|
|
|
INSTALLATION INSTRUCTIONS
|
|
|
|
Check the manifest in `README' to find a configuration file for your
|
|
Scheme implementation. Initialization files for most IEEE P1178
|
|
compliant Scheme Implementations are included with this distribution.
|
|
|
|
If the Scheme implementation supports `getenv', then the value of the
|
|
shell environment variable SCHEME_LIBRARY_PATH will be used for
|
|
`(library-vicinity)' if it is defined. Currently, Chez, Elk,
|
|
MITScheme, scheme->c, VSCM, and SCM support `getenv'.
|
|
|
|
You should check the definitions of `software-type',
|
|
`scheme-implementation-version', `implementation-vicinity', and
|
|
`library-vicinity' in the initialization file. There are comments in
|
|
the file for how to configure it.
|
|
|
|
Once this is done you can modify the startup file for your Scheme
|
|
implementation to `load' this initialization file. SLIB is then
|
|
installed.
|
|
|
|
Multiple implementations of Scheme can all use the same SLIB. Simply
|
|
configure each Scheme initialization files as outlined above.
|
|
|
|
The SCM implementation does not require any initialization file as
|
|
SLIB support is already built in to SCM. See the documentation with
|
|
SCM for installation instructions.
|
|
|
|
PORTING INSTRUCTIONS
|
|
|
|
If there is no initialization file for your Scheme implementation, you
|
|
will have to create one. Your Scheme implementation must be largely
|
|
compliant with `IEEE Std 1178-1990' or `Revised^4 Report on the
|
|
Algorithmic Language Scheme' to support SLIB.
|
|
|
|
`Template.scm' is an example configuration file. The comments inside
|
|
will direct you on how to customize it to reflect your system. Give
|
|
your new initialization file the implementation's name with `.init'
|
|
appended. For instance, if you were porting `foo-scheme' then the
|
|
initialization file might be called `foo.init'.
|
|
|
|
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.
|
|
|
|
Please mail new working configuration files to `jaffer@ai.mit.edu' so
|
|
that they can be included in the SLIB distribution.
|
|
|
|
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, for example, `(provided? 'rev3-report)' or `(require
|
|
'rev3-report)'.
|
|
|
|
`require.scm' defines `*catalog*', an association list of module
|
|
names and filenames. When a new package is added to the library, an
|
|
entry should be added to `require.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)'.
|
|
|
|
Submitted packages should not duplicate routines which are already in
|
|
SLIB files. Use `require' to force those features to be supported in
|
|
your package. Care should be taken that there are no circularities in
|
|
the `require's and `load's between the library packages.
|
|
|
|
Documentation should be provided in Emacs Texinfo format if possible,
|
|
But documentation must be provided.
|