summaryrefslogtreecommitdiffstats
path: root/README
diff options
context:
space:
mode:
authorBryan Newbold <bnewbold@robocracy.org>2017-02-20 00:05:25 -0800
committerBryan Newbold <bnewbold@robocracy.org>2017-02-20 00:05:25 -0800
commit8ffbc2df0fde83082610149d24e594c1cd879f4a (patch)
treea2be9aad5101c5e450ad141d15c514bc9c2a2963 /README
downloadslib-upstream/2a6.tar.gz
slib-upstream/2a6.zip
Import Upstream version 2a6upstream/2a6
Diffstat (limited to 'README')
-rw-r--r--README220
1 files changed, 220 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..35f7448
--- /dev/null
+++ b/README
@@ -0,0 +1,220 @@
+This directory contains the distribution of Scheme Library slib2a3.
+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.
+
+ 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
+ `printf.scm' has printf, fprintf, and sprintf compatible with C.
+ `scanf.scm' has scanf, fscanf, and sscanf compatible by C.
+ `lineio' has line oriented input/output functions.
+ `qp.scm' has printer safe for circular structures.
+ `break.scm' has break and continue.
+ `trace.scm' has trace and untrace for tracing function execution.
+ `debug.scm' has handy higher level debugging aids.
+ `strport.scm' has routines for string-ports.
+ `strsrch.scm' search for chars or substrings in strings and 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.
+ `primes.scm' has primes and probably-prime?.
+ `factor.scm' has factor.
+ `root.scm' has Newton's and Laguerre's methods for finding roots.
+ `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.
+ `comparse.scm' has shell-like command parsing.
+
+ `rdms.scm' has code to construct a relational database from a base
+ table implementation.
+ `alistab.scm' has association list base tables.
+ `dbutil.scm' has utilities for creating and manipulating relational
+ databases.
+ `dbrowse.scm' browses relational databases.
+ `paramlst.scm' has procedures for passing parameters by name.
+ `report.scm' prints database reports.
+ `batch.scm' Group and execute commands on various operating systems.
+ `makcrc.scm' Create Scheme procedure to calculate POSIX.2 checksums
+ or other CRCs.
+
+ `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.
+ `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.
+ `wttree.scm' has weight-balanced trees.
+ `wttest.scm' tests weight-balanced 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!.
+ `tsort.scm' has topological-sort.
+ `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.
+ `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.
+
+ 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
+directory. Simply configure each implementation's initialization file
+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.
+
+ SLIB includes methods to create heap images for the VSCM and Scheme48
+implementations. The instructions for creating a VSCM image are in
+comments in `vscm.init'. To make a Scheme48 image, `cd' to the SLIB
+directory and type `make slib48'. This will also create a shell script
+with the name `slib48' which will invoke the saved image.
+
+ 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.