diff options
Diffstat (limited to 'slib_8.html')
-rw-r--r-- | slib_8.html | 767 |
1 files changed, 767 insertions, 0 deletions
diff --git a/slib_8.html b/slib_8.html new file mode 100644 index 0000000..cddb1d5 --- /dev/null +++ b/slib_8.html @@ -0,0 +1,767 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html40/loose.dtd"> +<HTML> +<!-- Created on January, 10 2005 by texi2html 1.66 --> +<!-- +Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author) + Karl Berry <karl@freefriends.org> + Olaf Bachmann <obachman@mathematik.uni-kl.de> + and many others. +Maintained by: Many creative people <dev@texi2html.cvshome.org> +Send bugs and suggestions to <users@texi2html.cvshome.org> + +--> +<HEAD> +<TITLE>SLIB: About SLIB</TITLE> + +<META NAME="description" CONTENT="SLIB: About SLIB"> +<META NAME="keywords" CONTENT="SLIB: About SLIB"> +<META NAME="resource-type" CONTENT="document"> +<META NAME="distribution" CONTENT="global"> +<META NAME="Generator" CONTENT="texi2html 1.66"> + +</HEAD> + +<BODY LANG="en" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"> + +<A NAME="SEC277"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_7.html#SEC276"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC278"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_7.html#SEC183"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib.html#SEC_Top"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_9.html#SEC292"> >> </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_toc.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_abt.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H1> 8. About SLIB </H1> +<!--docid::SEC277::--> +<P> + +More people than I can name have contributed to SLIB. Thanks to all of +you! +</P> +<P> + +<BLOCKQUOTE> +SLIB 3a1, released January 2005.<BR> +Aubrey Jaffer <agj @ alum.mit.edu><BR> +<I>Hyperactive Software</I> -- The Maniac Inside!<BR> +<A HREF="http://swissnet.ai.mit.edu/~jaffer/SLIB.html">http://swissnet.ai.mit.edu/~jaffer/SLIB.html</A> +</BLOCKQUOTE> +<P> + +<TABLE BORDER="0" CELLSPACING="0"> +<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="slib_8.html#SEC278">8.1 Installation</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How to install SLIB on your system.</TD></TR> +<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="slib_8.html#SEC284">8.2 Porting</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">SLIB to new platforms.</TD></TR> +<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="slib_8.html#SEC285">8.3 Coding Guidelines</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How to write modules for SLIB.</TD></TR> +<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="slib_8.html#SEC287">8.4 Copyrights</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Intellectual propery issues.</TD></TR> +<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="slib_8.html#SEC291">8.5 About this manual</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> +</TABLE> +<P> + +<A NAME="Installation"></A> +<HR SIZE="6"> +<A NAME="SEC278"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC279"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC284"> >> </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_toc.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_abt.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H2> 8.1 Installation </H2> +<!--docid::SEC278::--> +<P> + +<A NAME="Installation"> +</A> +</P> +<P> + +<A NAME="IDX1639"></A> +<A NAME="IDX1640"></A> +There are four parts to installation: +</P> +<P> + +<UL> +<LI> +Unpack the SLIB distribution. +<LI> +Configure the Scheme implementation(s) to locate the SLIB directory. +<LI> +Arrange for Scheme implementation to load its SLIB initialization file. +<LI> +Build the SLIB catalog for the Scheme implementation. +</UL> +<P> + +<HR SIZE="6"> +<A NAME="SEC279"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC278"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC280"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_toc.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_abt.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H3> 8.1.1 Unpacking the SLIB Distribution </H3> +<!--docid::SEC279::--> +<P> + +If the SLIB distribution is a Linux RPM, it will create the SLIB +directory `<TT>/usr/share/slib</TT>'. +</P> +<P> + +If the SLIB distribution is a ZIP file, unzip the distribution to create +the SLIB directory. Locate this `<TT>slib</TT>' 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 `<TT>/usr/share/slib</TT>', `<TT>/usr/local/lib/slib</TT>', or +`<TT>/usr/lib/slib</TT>'. If you know where SLIB should go on other +platforms, please inform agj @ alum.mit.edu. +</P> +<P> + +<HR SIZE="6"> +<A NAME="SEC280"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC279"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC281"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_toc.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_abt.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H3> 8.1.2 Configure Scheme Implementation to Locate SLIB </H3> +<!--docid::SEC280::--> +<P> + +If the Scheme implementation supports <CODE>getenv</CODE>, then the value of +the shell environment variable <VAR>SCHEME_LIBRARY_PATH</VAR> will be used +for <CODE>(library-vicinity)</CODE> if it is defined. Currently, Chez, Elk, +MITScheme, scheme->c, VSCM, and SCM support <CODE>getenv</CODE>. Scheme48 +supports <CODE>getenv</CODE> but does not use it for determining +<CODE>library-vicinity</CODE>. (That is done from the Makefile.) +</P> +<P> + +The <CODE>(library-vicinity)</CODE> can also be specified from the SLIB +initialization file or by implementation-specific means. +</P> +<P> + +<HR SIZE="6"> +<A NAME="SEC281"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC280"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC282"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_toc.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_abt.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H3> 8.1.3 Loading SLIB Initialization File </H3> +<!--docid::SEC281::--> +<P> + +Check the manifest in `<TT>README</TT>' to find a configuration file for +your Scheme implementation. Initialization files for most IEEE P1178 +compliant Scheme Implementations are included with this distribution. +</P> +<P> + +You should check the definitions of <CODE>software-type</CODE>, +<CODE>scheme-implementation-version</CODE>, +<CODE>implementation-vicinity</CODE>, +and <CODE>library-vicinity</CODE> in the initialization file. There are +comments in the file for how to configure it. +</P> +<P> + +Once this is done, modify the startup file for your Scheme +implementation to <CODE>load</CODE> this initialization file. +</P> +<P> + +<HR SIZE="6"> +<A NAME="SEC282"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC281"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC283"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_toc.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_abt.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H3> 8.1.4 Build New SLIB Catalog for Implementation </H3> +<!--docid::SEC282::--> +<P> + +When SLIB is first used from an implementation, a file named +`<TT>slibcat</TT>' is written to the <CODE>implementation-vicinity</CODE> for that +implementation. Because users may lack permission to write in +<CODE>implementation-vicinity</CODE>, it is good practice to build the new +catalog when installing SLIB. +</P> +<P> + +To build (or rebuild) the catalog, start the Scheme implementation (with +SLIB), then: +</P> +<P> + +<TABLE><tr><td> </td><td class=example><pre>(require 'new-catalog) +</pre></td></tr></table><P> + +The catalog also supports color-name dictionaries. With an +SLIB-installed scheme implementation, type: +<TABLE><tr><td> </td><td class=example><pre>(require 'color-names) +(make-slib-color-name-db) +(require 'new-catalog) +(slib:exit) +</pre></td></tr></table><P> + +<HR SIZE="6"> +<A NAME="SEC283"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC282"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC284"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_toc.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_abt.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H3> 8.1.5 Implementation-specific Instructions </H3> +<!--docid::SEC283::--> +<P> + +Multiple implementations of Scheme can all use the same SLIB directory. +Simply configure each implementation's initialization file as outlined +above. +</P> +<P> + +<A NAME="IDX1641"></A> +</P> +<DL> +<DT><U>Implementation:</U> <B>SCM</B> +<DD>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. +</DL> +<P> + +<A NAME="IDX1642"></A> +</P> +<DL> +<DT><U>Implementation:</U> <B>VSCM</B> +<DD><TABLE><tr><td> </td><td class=display><pre style="font-family: serif">From: Matthias Blume <blume @ cs.Princeton.EDU> +Date: Tue, 1 Mar 1994 11:42:31 -0500 +</pre></td></tr></table><P> + +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. +</P> +<P> + +You have to provide `<TT>vscm.init</TT>' as an explicit command line +argument. Since this is not very nice I would recommend the following +installation procedure: +</P> +<P> + +<OL> +<LI> +run scheme +<LI> +<CODE>(load "vscm.init")</CODE> +<LI> +<CODE>(slib:dump "dumpfile")</CODE> +<LI> +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.) +</OL> +<P> + +</P> +</DL> +<P> + +<A NAME="IDX1643"></A> +</P> +<DL> +<DT><U>Implementation:</U> <B>Scheme48</B> +<DD>To make a Scheme48 image for an installation under <CODE><prefix></CODE>, +<P> + +<OL> +<LI> +<CODE>cd</CODE> to the SLIB directory +<LI> +type <CODE>make prefix=<prefix> slib48</CODE>. +<LI> +To install the image, type <CODE>make prefix=<prefix> install48</CODE>. This +will also create a shell script with the name <CODE>slib48</CODE> which will +invoke the saved image. +</OL> +</DL> +<P> + +<A NAME="IDX1644"></A> +</P> +<DL> +<DT><U>Implementation:</U> <B>PLT Scheme</B> +<DD><A NAME="IDX1645"></A> +<DT><U>Implementation:</U> <B>DrScheme</B> +<DD><A NAME="IDX1646"></A> +<DT><U>Implementation:</U> <B>MzScheme</B> +<DD><P> + +The `<TT>init.ss</TT>' file in the _slibinit_ collection is an SLIB +initialization file. +</P> +<P> + +To use SLIB in MzScheme, set the <VAR>SCHEME_LIBRARY_PATH</VAR> environment +variable to the installed SLIB location; then invoke MzScheme thus: +</P> +<P> + +<CODE>mzscheme -f ${SCHEME_LIBRARY_PATH}DrScheme.init</CODE> +</P> +</DL> +<P> + +<A NAME="IDX1647"></A> +</P> +<DL> +<DT><U>Implementation:</U> <B>MIT Scheme</B> +<DD><CODE>scheme -load ${SCHEME_LIBRARY_PATH}mitscheme.init</CODE> +</DL> +<P> + +<A NAME="IDX1648"></A> +</P> +<DL> +<DT><U>Implementation:</U> <B>Guile</B> +<DD><CODE>guile -l ${SCHEME_LIBRARY_PATH}guile.init</CODE> +</DL> +<P> + +<A NAME="Porting"></A> +<HR SIZE="6"> +<A NAME="SEC284"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC283"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC285"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC285"> >> </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_toc.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_abt.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H2> 8.2 Porting </H2> +<!--docid::SEC284::--> +<P> + +If there is no initialization file for your Scheme implementation, you +will have to create one. Your Scheme implementation must be largely +compliant with +<TABLE><tr><td> </td><td class=example><pre><CITE>IEEE Std 1178-1990</CITE>, +<CITE>Revised^4 Report on the Algorithmic Language Scheme</CITE>, or +<CITE>Revised^5 Report on the Algorithmic Language Scheme</CITE> +</pre></td></tr></table>in order to support SLIB. <A NAME="DOCF7" HREF="slib_fot.html#FOOT7">(7)</A> +<P> + +`<TT>Template.scm</TT>' 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 +`<TT>.init</TT>' appended. For instance, if you were porting +<CODE>foo-scheme</CODE> then the initialization file might be called +`<TT>foo.init</TT>'. +</P> +<P> + +Your customized version should then be loaded as part of your scheme +implementation's initialization. It will load `<TT>require.scm</TT>' from +the library; this will allow the use of <CODE>provide</CODE>, +<CODE>provided?</CODE>, and <CODE>require</CODE> along with the <EM>vicinity</EM> +functions (these functions are documented in the sections +<A HREF="slib_1.html#SEC2">1.1 Feature</A> and <A HREF="slib_1.html#SEC3">1.2 Require</A>). The rest of the library will then +be accessible in a system independent fashion. +</P> +<P> + +Please mail new working configuration files to <CODE>agj @ alum.mit.edu</CODE> +so that they can be included in the SLIB distribution. +</P> +<P> + +<A NAME="Coding Guidelines"></A> +<HR SIZE="6"> +<A NAME="SEC285"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC284"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC286"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC287"> >> </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_toc.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_abt.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H2> 8.3 Coding Guidelines </H2> +<!--docid::SEC285::--> +<P> + +All library packages are written in IEEE P1178 Scheme and assume that a +configuration file and `<TT>require.scm</TT>' package have already been +loaded. Other versions of Scheme can be supported in library packages +as well by using, for example, <CODE>(provided? 'r3rs)</CODE> or +<CODE>(require 'r3rs)</CODE> (see section <A HREF="slib_1.html#SEC3">1.2 Require</A>). +<A NAME="IDX1649"></A> +</P> +<P> + +If a procedure defined in a module is called by other procedures in +that module, then those procedures should instead call an alias +defined in that module: +</P> +<P> + +<TABLE><tr><td> </td><td class=example><pre>(define module-name:foo foo) +</pre></td></tr></table><P> + +The module name and `<SAMP>:</SAMP>' should prefix that symbol for the +internal name. Do not export internal aliases. +</P> +<P> + +A procedure is exported from a module by putting Schmooz-style +comments (see section <A HREF="slib_4.html#SEC87">4.14 Schmooz</A>) or `<SAMP>;@</SAMP>' at the beginning of the line +immediately preceding the definition (<CODE>define</CODE>, +<CODE>define-syntax</CODE>, or <CODE>defmacro</CODE>). Modules, exports and other +relevant issues are discussed in <A HREF="slib_1.html#SEC7">1.6 Compiling Scheme</A>. +</P> +<P> + +Code submitted for inclusion in SLIB should not duplicate (more than +one) routines already in SLIB files. Use <CODE>require</CODE> to force +those library routines to be used by your package. +</P> +<P> + +Documentation should be provided in Emacs Texinfo format if possible, +but documentation must be provided. +</P> +<P> + +Your package will be released sooner with SLIB if you send me a file +which tests your code. Please run this test <EM>before</EM> you send me +the code! +</P> +<P> + +<HR SIZE="6"> +<A NAME="SEC286"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC285"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC287"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_toc.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_abt.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H3> 8.3.1 Modifications </H3> +<!--docid::SEC286::--> +<P> + +Please document your changes. A line or two for `<TT>ChangeLog</TT>' is +sufficient for simple fixes or extensions. Look at the format of +`<TT>ChangeLog</TT>' to see what information is desired. Please send me +<CODE>diff</CODE> files from the latest SLIB distribution (remember to send +<CODE>diff</CODE>s of `<TT>slib.texi</TT>' and `<TT>ChangeLog</TT>'). This makes for +less email traffic and makes it easier for me to integrate when more +than one person is changing a file (this happens a lot with +`<TT>slib.texi</TT>' and `<SAMP>*.init</SAMP>' files). +</P> +<P> + +If someone else wrote a package you want to significantly modify, please +try to contact the author, who may be working on a new version. This +will insure against wasting effort on obsolete versions. +</P> +<P> + +Please <EM>do not</EM> reformat the source code with your favorite +beautifier, make 10 fixes, and send me the resulting source code. I do +not have the time to fish through 10000 diffs to find your 10 real fixes. +</P> +<P> + +<A NAME="Copyrights"></A> +<HR SIZE="6"> +<A NAME="SEC287"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC286"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC288"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC291"> >> </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_toc.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_abt.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H2> 8.4 Copyrights </H2> +<!--docid::SEC287::--> +<P> + +<A NAME="Copyrights"> +</A> +</P> +<P> + +This section has instructions for SLIB authors regarding copyrights. +<A NAME="IDX1650"></A> +</P> +<P> + +Each package in SLIB must either be in the public domain, or come with a +statement of terms permitting users to copy, redistribute and modify it. +The comments at the beginning of `<TT>require.scm</TT>' and +`<TT>macwork.scm</TT>' illustrate copyright and appropriate terms. +</P> +<P> + +If your code or changes amount to less than about 10 lines, you do not +need to add your copyright or send a disclaimer. +</P> +<P> + +<HR SIZE="6"> +<A NAME="SEC288"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC287"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC289"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_toc.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_abt.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H3> 8.4.1 Putting code into the Public Domain </H3> +<!--docid::SEC288::--> +<P> + +In order to put code in the public domain you should sign a copyright +disclaimer and send it to the SLIB maintainer. Contact +agj @ alum.mit.edu for the address to mail the disclaimer to. +</P> +<P> + +<BLOCKQUOTE> +I, <VAR><my-name></VAR>, hereby affirm that I have placed the software +package <VAR><name></VAR> in the public domain. +<P> + +I affirm that I am the sole author and sole copyright holder for the +software package, that I have the right to place this software package +in the public domain, and that I will do nothing to undermine this +status in the future. +<PRE> <VAR>signature and date</VAR> +</PRE> +</BLOCKQUOTE> +<P> + +This wording assumes that you are the sole author. If you are not the +sole author, the wording needs to be different. If you don't want to +be bothered with sending a letter every time you release or modify a +module, make your letter say that it also applies to your future +revisions of that module. +</P> +<P> + +Make sure no employer has any claim to the copyright on the work you +are submitting. If there is any doubt, create a copyright disclaimer +and have your employer sign it. Mail the signed disclaimer to the +SLIB maintainer. Contact agj @ alum.mit.edu for the address to mail +the disclaimer to. An example disclaimer follows. +</P> +<P> + +<HR SIZE="6"> +<A NAME="SEC289"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC288"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC290"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_toc.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_abt.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H3> 8.4.2 Explicit copying terms </H3> +<!--docid::SEC289::--> +<P> + +If you submit more than about 10 lines of code which you are not +placing into the Public Domain (by sending me a disclaimer) you need +to: +</P> +<P> + +<UL> +<LI> +Arrange that your name appears in a copyright line for the appropriate +year. Multiple copyright lines are acceptable. +<LI> +With your copyright line, specify any terms you require to be +different from those already in the file. +<LI> +Make sure no employer has any claim to the copyright on the work you +are submitting. If there is any doubt, create a copyright disclaimer +and have your employer sign it. Mail the signed disclaim to the SLIB +maintainer. Contact agj @ alum.mit.edu for the address to mail the +disclaimer to. +</UL> +<P> + +<HR SIZE="6"> +<A NAME="SEC290"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC289"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC291"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_toc.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_abt.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H3> 8.4.3 Example: Company Copyright Disclaimer </H3> +<!--docid::SEC290::--> +<P> + +This disclaimer should be signed by a vice president or general +manager of the company. If you can't get at them, anyone else +authorized to license out software produced there will do. Here is a +sample wording: +</P> +<P> + +<BLOCKQUOTE> +<VAR><employer></VAR> Corporation hereby disclaims all copyright +interest in the program <VAR><program></VAR> written by <VAR><name></VAR>. +<P> + +<VAR><employer></VAR> Corporation affirms that it has no other intellectual +property interest that would undermine this release, and will do +nothing to undermine it in the future. +</P> +<P> + +<PRE><VAR><signature and date></VAR>, +<VAR><name></VAR>, <VAR><title></VAR>, <VAR><employer></VAR> Corporation +</PRE> +</BLOCKQUOTE> +<P> + +<A NAME="About this manual"></A> +<HR SIZE="6"> +<A NAME="SEC291"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC290"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_9.html#SEC292"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_toc.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_abt.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H2> 8.5 About this manual </H2> +<!--docid::SEC291::--> +<P> + +<UL> +<LI> +Entries that are labeled as Functions are called for their return +values. Entries that are labeled as Procedures are called primarily for +their side effects. +<P> + +</P> +<LI> +Examples in this text were produced using the <CODE>scm</CODE> Scheme +implementation. +<P> + +</P> +<LI> +At the beginning of each section, there is a line that looks like +<A NAME="IDX1651"></A> +<CODE>(require 'feature)</CODE>. Include this line in your code prior to +using the package. +</UL> +<P> + +<A NAME="Index"></A> +<HR SIZE="6"> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_8.html#SEC277"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_toc.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="slib_abt.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<BR> +<FONT SIZE="-1"> +This document was generated +by <I>Steve Langasek</I> on <I>January, 10 2005</I> +using <A HREF="http://texi2html.cvshome.org"><I>texi2html</I></A> +</FONT> + +</BODY> +</HTML> |