From 87b82b5822ca54228cfa6df29be3ad9d4bc47d16 Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Mon, 20 Feb 2017 00:05:28 -0800 Subject: Import Upstream version 2d2 --- README | 172 ++++++++++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 138 insertions(+), 34 deletions(-) (limited to 'README') diff --git a/README b/README index daae3a6..8d4d31d 100644 --- a/README +++ b/README @@ -1,15 +1,15 @@ -This directory contains the distribution of Scheme Library slib2c7. +This directory contains the distribution of Scheme Library slib2d2. Slib conforms to Revised^5 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. +The maintainer can be reached at agj @ alum.mit.edu. http://swissnet.ai.mit.edu/~jaffer/SLIB.html MANIFEST `README' is this file. It contains a MANIFEST, INSTALLATION - INSTRUCTIONS, and proposed coding standards. + INSTRUCTIONS, and coding guidelines. `FAQ' Frequently Asked Questions and answers. `ChangeLog' documents changes to slib. `slib.texi' has documentation on library packages in TexInfo format. @@ -18,22 +18,23 @@ The maintainer can be reached at jaffer @ ai.mit.edu. reflect your system. `bigloo.init' is a configuration file for Bigloo. `chez.init' is a configuration file for Chez Scheme. + `DrScheme.init' is a configuration file for DrScheme. `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. `pscheme.init' is configuration file for PocketScheme 0.2.5 (WinCE SIOD) `RScheme.init' is a configuration file for RScheme. - `scheme2c.init' is a configuration file for DEC's scheme->c. + `scheme2c.init' is a configuration file for DEC's scheme->c. `scheme48.init' is a configuration file for Scheme48. + `s48-0_57.init is a configuration file for Scheme48-0.57. `scsh.init' is a configuration file for Scheme-Shell `scm.init' is a configuration file for SCM. `t3.init' is a configuration file for T3.1 in Scheme mode. `STk.init' is a configuration file for STk. `umbscheme.init' is a configuration file for umb-scheme. `vscm.init' is a configuration file for VSCM. + `guile.init' is a configuration file for guile. `mklibcat.scm' builds the *catalog* cache. `require.scm' has code which allows system independent access to the library files. @@ -56,6 +57,7 @@ The maintainer can be reached at jaffer @ ai.mit.edu. `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. + `differ.scm' An O(NP) Sequence Comparison Algorithm. `alist.scm' has functions accessing and modifying association lists. `hash.scm' defines hash, hashq, and hashv. @@ -68,6 +70,7 @@ The maintainer can be reached at jaffer @ ai.mit.edu. `primes.scm' has primes and probably-prime?. `factor.scm' has factor. `root.scm' has Newton's and Laguerre's methods for finding roots. + `minimize.scm' has Golden Section Search for minimum value. `cring.scm' extend + and * to custom commutative rings. `selfset.scm' sets single letter identifiers to their symbols. `determ.scm' compute determinant of list of lists. @@ -87,8 +90,11 @@ The maintainer can be reached at jaffer @ ai.mit.edu. `alistab.scm' has association list base tables. `dbutil.scm' has utilities for creating and manipulating relational databases. - `htmlform' generates HTML2.0 forms and service CGI requests from RDB - command tables. + `htmlform.scm' generates HTML-3.2 with forms. + `db2html.scm' convert relational database to hyperlinked tables and + pages. + `http-cgi.scm' serves WWW pages with HTTP or CGI. + `uri.scm' encodes and decodes Uniform Resource Identifiers. `dbrowse.scm' browses relational databases. `paramlst.scm' has procedures for passing parameters by name. `getparam.scm' has procedures for converting getopt to parameters. @@ -135,6 +141,7 @@ The maintainer can be reached at jaffer @ ai.mit.edu. `tsort.scm' has topological-sort. `comlist.scm' has many common list and mapping procedures. `tree.scm' has functions dealing with trees. + `coerce.scm' has coerce and type-of from Common-Lisp. `chap.scm' has functions which compare and create strings in "chapter order". @@ -147,23 +154,49 @@ The maintainer can be reached at jaffer @ ai.mit.edu. `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. - `eval.scm' has proposed eval with environments from R5RS. + `dynwind.scm' has dynamic-wind from R5RS. + `eval.scm' has eval with environments from R5RS. `dwindtst.scm' has routines for characterizing dynamic-wind. - `dynamic.scm' has proposed DYNAMIC data type. + `dynamic.scm' has DYNAMIC data type [obsolete]. `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. + `structure.scm' has undocumented syntax-case macros. `byte.scm' has arrays of small integers. - `nclients' provides a Scheme interface to FTP and WWW Browsers. + `nclients.scm' provides a Scheme interface to FTP and WWW Browsers. + `pnm.scm' provides a Scheme interface to "portable bitmap" files. + `simetrix.scm' provides SI Metric Interchange Format. + `srfi.scm' implements Scheme Request for Implementation. + `srfi-N.scm' implements srfi-N. 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. + There are four parts to installation: + + * Unpack the SLIB distribution. + + * Configure the Scheme implementation(s) to locate the SLIB + directory. + + * Arrange for Scheme implementation to load its SLIB initialization + file. + + * Build the SLIB catalog for the Scheme implementation. + +Unpacking the SLIB Distribution +------------------------------- + + If the SLIB distribution is a Linux RPM, it will create the SLIB +directory `/usr/share/slib'. + + If the SLIB distribution is a ZIP file, unzip the distribution to +create the SLIB directory. Locate this `slib' directory either in your +home directory (if only you will use this SLIB installation); or put it +in a location where libraries reside on your system. On unix systems +this might be `/usr/share/slib', `/usr/local/lib/slib', or +`/usr/lib/slib'. If you know where SLIB should go on other platforms, +please inform agj @ alum.mit.edu. + +Configure Scheme Implementation to Locate SLIB +---------------------------------------------- If the Scheme implementation supports `getenv', then the value of the shell environment variable SCHEME_LIBRARY_PATH will be used for @@ -172,30 +205,101 @@ MITScheme, scheme->c, VSCM, and SCM support `getenv'. Scheme48 supports `getenv' but does not use it for determining `library-vicinity'. (That is done from the Makefile.) + The `(library-vicinity)' can also be specified from the SLIB +initialization file or by implementation-specific means. + +Loading SLIB Initialization File +-------------------------------- + + 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. + 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. + Once this is done, modify the startup file for your Scheme +implementation to `load' this initialization file. + +Build New SLIB Catalog for Implementation +----------------------------------------- + + When SLIB is first used from an implementation, a file named +`slibcat' is written to the `implementation-vicinity' for that +implementation. Because users may lack permission to write in +`implementation-vicinity', it is good practice to build the new catalog +when installing SLIB. + + To build (or rebuild) the catalog, start the Scheme implementation +(with SLIB), then: + + (require 'new-catalog) + +Implementation-specific Instructions +------------------------------------ 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. + - Implementation: SCM + The SCM implementation does not require any initialization file as + SLIB support is already built into SCM. See the documentation + with SCM for installation instructions. + + - Implementation: VSCM + From: Matthias Blume + Date: Tue, 1 Mar 1994 11:42:31 -0500 + + Disclaimer: The code below is only a quick hack. If I find some + time to spare I might get around to make some more things work. + + You have to provide `vscm.init' as an explicit command line + argument. Since this is not very nice I would recommend the + following installation procedure: + + 1. run scheme + + 2. `(load "vscm.init")' + + 3. `(slib:dump "dumpfile")' + + 4. mv dumpfile place-where-vscm-standard-bootfile-resides e.g. + mv dumpfile /usr/local/vscm/lib/scheme-boot (In this case + vscm should have been compiled with flag + -DDEFAULT_BOOTFILE='"/usr/local/vscm/lib/scheme-boot"'. See + Makefile (definition of DDP) for details.) + + + - Implementation: Scheme48 + To make a Scheme48 image for an installation under `', + + 1. `cd' to the SLIB directory + + 2. type `make prefix= slib48'. + + 3. To install the image, type `make prefix= install48'. + This will also create a shell script with the name `slib48' + which will invoke the saved image. + + - Implementation: PLT Scheme + - Implementation: DrScheme + - Implementation: MzScheme + The `init.ss' file in the _slibinit_ collection is an SLIB + initialization file. + + To use SLIB in MzScheme, set the SCHEME_LIBRARY_PATH environment + variable to the installed SLIB location; then invoke MzScheme thus: + + `mzscheme -L init.ss slibinit' + + - Implementation: MIT Scheme + `scheme -load ${SCHEME_LIBRARY_PATH}mitscheme.init' - 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 for an installation -under `', `cd' to the SLIB directory and type `make -prefix= slib48'. To install the image, type `make -prefix= install48'. This will also create a shell script with -the name `slib48' which will invoke the saved image. + - Implementation: Guile + `guile -l ${SCHEME_LIBRARY_PATH}guile.init' PORTING INSTRUCTIONS @@ -219,10 +323,10 @@ 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 + Please mail new working configuration files to `agj @ alum.mit.edu' so that they can be included in the SLIB distribution. - CODING STANDARDS + CODING GUIDELINES All library packages are written in IEEE P1178 Scheme and assume that a configuration file and `require.scm' package have already been -- cgit v1.2.3