home *** CD-ROM | disk | FTP | other *** search
- This directory contains the distribution of the Scheme Library slib2a.
- 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.
- `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.
- `lineio' has line oriented input/output functions.
- `debug.scm' has qp, a printer save for circular structures, tracef
- and untracef for tracing function execution, and break and
- continue.
- `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.
- `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.
-
- `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).
- `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.
-
- `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 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 (all documented in require.doc).
- 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) or (REQUIRE '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 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 REQUIREs and LOADs between the library packages.
-
- Documentation should be provided in Emacs Texinfo format if possible;
- But documentation must be provided.
-