%
% STk Reference manual (Appendix: Miscellaneous Informations)
%
%           Author: Erick Gallesio [eg@unice.fr]
%    Creation date: 21-Dec-1994 12:05
% Last file update:  8-Jul-1996 22:18
%

\section{Introduction}
This appendix list a number of things which cannot go elsewhere in this
document. The only link between the items listed her is that they should
ease your life when using {\stk}. 

\section{About \stk}

\subsection{Last release}

{\stk} distribution is available on various sites. The original distribution
site is {\tt kaolin.unice.fr} {\tt (193.48.229.225)}. Files are available
through anonymous ftp and are located in the {\tt /pub}
directory. Distribution file names have the form {\tt STk-x.y.tar.gz}, where {\tt
x} and {\tt y} represent the version and the release of the package. You can
also find interim releases of {\stk}. Interim releases are stored in file
whose name have the form {\tt STk-x.y.z.tar.gz} where {\tt z} is the interim
release number.

David Fox maintains a mirror site of {\tt kaolin.unice.fr}. This site is
located in the USA and is available at the following URL: 
{\tt ftp://cs.nyu.edu/pub/local/fox/stk}.

\subsection{Sharing Code}

If you have written code that you want to share with the (small) {\stk}
community, you can deposit it in the directory {\tt /pub/Incoming} of {\tt
kaolin.unice.fr}. Mail me a small note when you deposit a file in this
directory so I can put in in its definitive place ({\tt /pub/Contrib} 
directory contains the contributed code).

\subsection{{\stk} Mailing list}

There is a mailing list for {\stk} located on {\tt kaolin.unice.fr}.  The
intent of this mailing list is to permit to {\stk} users to share experiences,
expose problems, submit ideas and \ldots everything which you find interesting
(and which is related to \stk).

To subscribe to the mailing list, simply send a message with the word {\tt
subscribe} in the {\tt Subject:} field of you mail.  Mail must be sent to the
following address: {\tt stk-request@kaolin.unice.fr}

To unsubscribe from the mailing list, send a mail at previous email address with the word {\tt unsubscribe} in the {\tt Subject:} field.

For more information on the mailing list management send a message with the
word {\tt help} in the {\tt Subject:} field of your mail. In particular, it
is possible to find all the messages which have already been sent on the {\stk} 
mailing list.

Subscription/un-subscription/information requests are processed
automatically without human intervention. If you something goes wrong, send a
mail to {\tt eg@unice.fr}.

Once you have properly subscribe to the mailing list, 
\begin{itemize}
\item you can send your messages about {\stk} to {\tt stk@kaolin.unice.fr},
\item you will receive all the messages of the mailing list to the email 
address you used when you subscribed to the list.
\end{itemize}

\subsection{{\stk} FAQ}

Marc Furrer has set up a FAQ{\index{FAQ} for {\stk}. 
This FAQ is regularly posted on the {\stk} mailing list. It can
also be accessed through  {\tt
http://ltiwww.epfl.ch/~furrer/STk/FAQ.html}. ASCII version of the FAQ is
available from {\tt http://ltiwww.epfl.ch/~furrer/STk/FAQ.txt}.

\subsection{Reporting a bug}

When you find a bug in {\stk}, please send its description to the following
address {\tt stk-bugs@kaolin.unice.fr}. Don't forget to indicate the version
you use and the architecture the system is compiled on.  {\stk} version and
architecture can be found by using the {\tt version} and {\tt machine-type}
Scheme primitives. If possible, try to find a small program which exhibit the bug.

\section{{\stk} and Emacs}

The Emacs family editors\index{Emacs editor} can be customized to ease
viewing and editing programs of a particular sort. Hints given below
enable a fine ``integration'' of {\stk} in Emacs.

\subsection*{Automatic scheme-mode setting}

Emacs mode can be chosen automatically on the file's name. To edit file
ended by {\tt .stk }or {\tt .stklos} in Scheme mode, you have to set the
Elisp variable {\tt auto-mode-alist} to control the correspondence between
those suffixes and the scheme mode. The simpler way to set this variable
consists to add the following lines in your .{\tt emacs} startup file.


\begin{quote}
\begin{verbatim}
;; Add the '.stk' and '.stklos' suffix in the auto-mode-alist Emacs
;; variable. Setting this variable permits to automagically place the
;; buffer in scheme-mode.
(setq-default auto-mode-alist (append auto-mode-alist 
                                      ("\\.stk$"    . scheme-mode)
                                      ("\\.stklos$" . scheme-mode)))
\end{verbatim}
\end{quote}

\subsection*{Using Emacs and {\em CMU Scheme}}

{\em CMU Scheme} package\index{CMU Scheme} package} permits to run the {\stk} interpreter in an Emacs
window. Once the package is loaded, you can send  text to the inferior
{\stk} interpreter from other buffers containing Scheme source. 
The {\em CMU Scheme} package is distributed with Emacs (both FSF-Emacs and
Xemacs) and you should have it if you are running this editor.

To use the {\em CMU Scheme} package with {\stk}, place the following lines in
your {\tt .emacs} startup file.

\begin{quote}
\begin{verbatim}
;; Use cmu-scheme rather than xscheme which is launched by default
;; whence running 'run-scheme' (xscheme is wired with CScheme)
(autoload 'run-scheme "cmuscheme" "Run an inferior Scheme" t)
(setq scheme-program-name "stk")
(setq inferior-scheme-mode-hook '(lambda() (split-window)))
\end{verbatim}
\end{quote}


After having entered those lines in your {\tt .emacs} file, you can simply
run the {\stk} interpreter by typing
\begin{quote}
\begin{verbatim}
M-x run-scheme
\end{verbatim}
\end{quote}


Read the {\em CMU Scheme} documentation (or use the describe-mode Elisp command)
for a complete description of this package.

\subsection*{Using Emacs and the {\em Ilisp} package}

{\em Ilisp}\index{Ilisp package} is another scheme package which allows to
run the {\stk} interpreter in an Emacs window. This is a rich package with
a lot of nice features.  {\em Ilisp} comes pre-installed with Xemacs; it
has to be installed with FSF Emacs (the last version of {\em Ilisp} can be
ftp'ed anonymously from {\tt ftp.cs.cmu.edu} (128.2.206.173) in the {\tt
/user/ai/lang/lisp/util/emacs/ilisp} directory).

To use the {\em Ilisp} package with {\stk}, place the following lines in
your {\tt .emacs} startup file.


\begin{quote}
\begin{verbatim}
(autoload 'run-ilisp              "ilisp" "Select a new inferior LISP." t)
(autoload 'stk                    "ilisp" "Run stk in ILISP." t)
(add-hook 'ilisp-load-hook
          '(lambda ()
             (require 'completer)

             ;; Define STk dialect characteristics
             (defdialect stk "STk Scheme"
               scheme
               (setq comint-prompt-regexp "^STk> ")
               (setq ilisp-program "stk -interactive")
               (setq comint-ptyp t)
               (setq comint-always-scroll t)
               (setq ilisp-last-command "*"))))
\end{verbatim}
\end{quote}


After having entered those lines in your {\tt .emacs} file, you can simply
run the {\stk} interpreter by typing
\begin{quote}
\begin{verbatim}
M-x stk
\end{verbatim}
\end{quote}


The Ilisp package comes with a rich documentation which describe how to
customize the package. 

\subsection*{Other packages}

Another way to use {\stk} and Emacs consists to use a special purpose
{\stk} mode. You can find two such modes in the {\tt /pub/Contrib}
directory of {\tt kaolin.unice.fr}.

\subsection {Using the SLIB package with \stk}

Aubrey Jaffer maintains a package called {\em SLIB}\index{SLIB package}
which is a portable Scheme library which provides compatibility and utility
functions for all standard Scheme implementations. To use this package, you
have just to type
\begin{quote}
\begin{verbatim}
(require "slib")
\end{verbatim}
\end{quote}
and follow the instructions given in the {\em SLIB} library to use a
particular package. 
\begin{note}
{\em SLIB} uses also the {\em require/provide} mechanism to load components
of the library. Once {\em SLIB} has been loaded, the standard {\stk} 
{\tt require}\schindex{require} and {\tt provide}\schindex{provide}
are overloaded such as if their parameter
is a string this is the old {\stk} procedure which is called, and if their
parameter is a symbol, this is the {\em SLIB} one which is called.
\end{note}

\section{Getting information about Scheme}

\subsection{The {\rrrr} document}

{\rrrr}{\index{R4RS}} is the document which fully describe the Scheme
Programming Language, it can be found in the Scheme repository
(see~\ref{scheme-repository}) in the directory:
\begin{quote}
{\tt ftp.cs.indiana.edu:/pub/scheme-repository/doc}
\end{quote}

Aubrey Jaffer has also translated this document in HTML. A version of this 
document is available at
\begin{quote}
{\tt file://swiss-ftp.ai.mit.edu/pub/scm/HTML/r4rs\_toc.html}
\end{quote}

\subsection{The Scheme Repository}

The main site where you can find (many) informations about Scheme is
located in the University of Indiana. The Scheme repository\index{Scheme
Repository} is maintained by David Eby.  The repository currently consists
of the following areas:
\begin{itemize}
\item      Lots of scheme code meant for benchmarking, library/support, research, education, and fun. 
\item      On-line documents: Machine readable standards documents, standards proposals, various Scheme-related tech reports, conference papers, mail archives, etc. 
\item      Most of the publicly distributable Scheme Implementations. 
\item    Material designed primarily for instruction. 
\item Freely-distributable promotional or demonstration material for Scheme-related products. 
\item   Utilities (e.g., Schemeweb, SLaTeX). 
\item   Extraneous stuff, extensions, etc. 
\end{itemize}

You can access the Scheme repository with
{\tt
\begin{itemize}
\item ftp.cs.indiana.edu:/pub/scheme-repository
\item http://www.cs.indiana.edu/scheme-repository/SRhome.html
\end{itemize}
}

The Scheme Repository is mirrored in Europe: 
{\tt
\begin{itemize}
\item     ftp.inria.fr:/lang/Scheme
\item     faui80.informatik.uni-erlangen.de:/pub/scheme/yorku
\item     ftp.informatik.uni-muenchen.de:/pub/comp/programming/languages/scheme/scheme-repository
\end{itemize}
}
\subsection{Usenet newsgroup and other addresses}

There is a usenet newsgroup about the Scheme Programming language: {\tt
comp.lang.scheme}.

Following addresses contains also material about the Scheme language

\begin{itemize}
\item {\tt http://www.cs.cmu.edu:8001/Web/Groups/AI/html/faqs/lang/scheme/top.html}
contains the Scheme FAQ.
\item {\tt http://www-swiss.ai.mit.edu/scheme-home.html} is the Scheme Home page
at MIT
\item {\tt http://www.ai.mit.edu/projects/su/su.html} is the Scheme Underground
web page
\end{itemize}
