Commit of 3.99.1 version

This commit is contained in:
Erick Gallesio
2019-10-31 12:04:33 +01:00
parent 5f74a25a3c
commit 3c98caa84e
158 changed files with 10002 additions and 8279 deletions
+69 -11
View File
@@ -3,7 +3,7 @@
%
% Author: Erick Gallesio [eg@unice.fr]
% Creation date: ??-Nov-1993 ??:??
% Last file update: 8-Jul-1996 21:52
% Last file update: 20-Apr-1998 11:54
%
\newcommand{\schglob}[1]{*#1*}
@@ -16,7 +16,8 @@ implementation and the language described in {\rrrr}.
{\stk} symbol syntax has been augmented to allow case significant symbols.
This extension is discussed in \ref{symbolsection}.
The following symbols are defined in the global environment.
\smallskip {\stk} also defines some symbols in the global environment
which are described below:
\begin{itemize}
@@ -34,7 +35,7 @@ The following symbols are defined in the global environment.
each loaded file is printed before its effective reading. File names
are printed on the standard error stream.
\item {\tt\schglob{load-path}}\schindex{\schglob{load-path}} must
\item {\tt\schglob{load-path}}\schindex{\schglob{load-path}} must
contain a list of strings. Each string is taken as a directory
path name in which a file will be searched for loading. This
variable can be set automatically from the {\tt STK\_LOAD\_PATH}
@@ -47,13 +48,7 @@ The following symbols are defined in the global environment.
file does not exist, the system will sequentially try to find the file by
appending each suffix of this list. A typical value for this
variable may be {\tt ("stk" "stklos" "scm" "so")}.
\item {\tt\schglob{help-path}}\schindex{help,
getting}\schindex{\schglob{help-path}} must contain a list of
strings. Each string is taken as a directory path name in which
documentation files are searched. This variable can be set
automatically from the {\tt STK\_HELP\_PATH} shell variable. See
{\tt stk(1)} for more details.
\item {\tt\schglob{argc}}\schindex{\schglob{argc}} contains the
number of arguments (0 if none), not including interpreter
@@ -70,14 +65,77 @@ The following symbols are defined in the global environment.
See {\tt stk(1)} for more details.
\item {\tt\schglob{print-banner}}\schindex{\schglob{print-banner}}. If
{\tt\schglob{print-verbose}} is {\schfalse}, the usual copyright
{\tt\schglob{print-banner}} is {\schfalse}, the usual copyright
message is not displayed when the interpreter is started.
\item {\tt\schglob{stk-library}}\schindex{\schglob{stk-library}}
contains the path name of the installation directory of the
{\stk} library. This variable can be set automatically from the
{\tt STK\_LIBRARY} shell variable. See {\tt stk(1)} for more
details.
\end{itemize}
The following symbols are defined only when Tk is loaded:
\begin{itemize}
\item {\tt\schglob{root}}\schindex{\schglob{root}} designates the Tk main
window (see~A-\ref{root window}). This variable is not set if
the Tk toolkit is not initialized.
\item {\tt\schglob{help-path}}\schindex{help,
getting}\schindex{\schglob{help-path}} must contain a list of
strings. Each string is taken as a directory path name in which
documentation files are searched. This variable can be set
automatically from the {\tt STK\_HELP\_PATH} shell variable. See
{\tt stk(1)} for more details.
\item {\tt\schglob{image-path}}\schindex{\schglob{image-path}} must contain
a list of strings. Each string is taken as a directory path name in which
images are searched by the function \texttt{make-image}. This variable can be
set automatically from the {\tt STK\_IMAGE\_PATH} shell variable. See
{\tt stk(1)} and {\tt make-image(n)} for more details.
\item {\tt\schglob{root}}\schindex{\schglob{root}} designates the Tk main
window (see~A-\ref{root window}). This variable is not set if
the Tk toolkit is not initialized.
\item {\tt\schglob{start-withdrawn}}\schindex{\schglob{start-withdrawn}}. If
\schglob{start-withdrawn} is not false, the \schglob{root} window
is not mapped on screen until its first sub-window is packed or some
action is asked to the window manager for it.
\item {\tt\schglob{tk-version}}\schindex{\schglob{tk-version}} is a string
which contains the version number of the Tk toolkit used by {\stk}.
\item {\tt\schglob{tk-patch-level}}\schindex{\schglob{tk-patch-level}} is
a string which contains the version and patch level of the Tk toolkit
used by {\stk}.
\end{itemize}
Furthermore, {\stk} also defines the following procedures in the global
environment:
\begin{itemize}
\item \ide{report-error}. This procedure is called by the error system to
display the message error. This procedure is described in
{\tt report-error(n)}
\item \ide{repl-display-prompt}. \label{repl-display-prompt}
This procedure is called when the system
is run interactively before reading a \emph{sexpr} to evaluate to display
a prompt. This procedure is described in {\tt repl-display-prompt(n)}.
\item \ide{repl-display-result}. This procedure is called when the system
is run interactively after the evaluation of a \emph{sexpr} to write the
result. This procedure is described in {\tt repl-display-result(n)}.
\end{itemize}
\section{Types}
{\stk} implements all the types defined as mandatory in {\rrrr}. However, complex
+4 -4
View File
@@ -3,7 +3,7 @@
%
% Author: Erick Gallesio [eg@unice.fr]
% Creation date: 22-May-1994 22:13
% Last file update: 21-Jan-1996 17:35
% Last file update: 22-Apr-1998 11:04
%
\section{Introduction}
@@ -388,8 +388,8 @@ So:
These rules are used to compute a linear order for a class and all its
superclasses, from most specific to least specific. This order is called the
``class precedence list'' of the class. Given those two rules, we can claim
that the initial form for the {\tt x} slot of previous example is 2 since the
``class precedence list'' of the class. Given these two rules, we can claim
that the initial form for the {\tt x} slot of previous example is 1 since the
class {\tt X} is placed before {\tt Y} in class precedence list of {\tt Z}.
This two rules are not always enough to determine a unique order, however, but
@@ -517,7 +517,7 @@ the list of applicable methods. This is done by using the special form
\begin{scheme}
(define-method Test((a <integer>)) (cons 'integer (next-method)))
(define-method Test((a <number>)) (cons 'number (next-method)))
(define-method Test(a) (list 'top))
(define-method Test(a) (list 'top))
\end{scheme}
With those definitions,
+54 -2
View File
@@ -3,7 +3,7 @@
%
% Author: Erick Gallesio [eg@unice.fr]
% Creation date: 21-Dec-1997 20:09
% Last file update: 21-Dec-1997 21:56
% Last file update: 18-Apr-1998 13:36
%
\section*{Introduction}
@@ -11,11 +11,63 @@
This appendix lists the main differences\footnote{ Only the
differences which affect the language or new ports are reported here.
In particular, internal changes, packages written in Scheme or
performance enhancement are not discussed here.}.among the various
performance enhancement are not discussed here.} among the various
recent versions of STk. Differences with older versions as well as
implementation changes are described in the CHANGES file located in
the main directory of the STk distribution.
\section*{Release 3.99.0}
\small{\emph{Release date: 04/10/98}}
Changes can be classified in three categories:
\begin{itemize}
\item About Scheme
\begin{itemize}
\item A module system has been added
\item Integration of the Bigloo \ide{match-case} and
\ide{match-lambda} primitives. Furthermore, the file \emph{bigloo.stk}
provides some compatibility between {\stk} and bigloo modules.
\item A simple Foreign Function Interface has been added.
\item integrates the {\rfive} \ide{values} and \ide{call-with-values}
\item multi-line comments have been added.
\item new file primitives: \texttt{remove-file}, \texttt{rename-file} and
\texttt{temporary-file-name}.
\item new list primitives: \texttt{append!}, \texttt{last-pair},
\texttt{remq}, \texttt{remv} and \texttt{remove}.
\item \texttt{load}, \texttt{try-load} and \texttt{autoload?} can nw
be called with a module as second parameter. If this second parameter is
present, the loading is done in the environment of the given module.
\end{itemize}
\item About Tk
\begin{itemize}
\item Integration of the Tk8.0 toolkit
\item Buttons, Checkbuttons and Radiobuttons can use a
\texttt{:variable} and \texttt{:textvariable} in a given
environment. This environment is given with the new \texttt{:environment}
option.
\end{itemize}
\item About STklos
\begin{itemize}
\item The MOP of {\stklos} is now very similar to the CLOS's MOP. In
particular generic function has been added for controlling slot
accesses, as well as numerous introspection functions.
\item When a class is redefined, the instances and methods which uses it
are redefined accordingly, as in CLOS (i.e. if anew slot is added in a
class, all its -- direct or indirect -- instances will have the new
slot added dynamically.
\end{itemize}
\end{itemize}
\section*{Release 3.1.1}
\small{\emph{Release date: 09/26/96}}
+48 -18
View File
@@ -3,7 +3,7 @@
%
% Author: Erick Gallesio [eg@unice.fr]
% Creation date: ??-Nov-1993 ??:??
% Last file update: 16-Dec-1997 19:09
% Last file update: 18-Apr-1998 14:47
%
\section*{Introduction}
@@ -55,7 +55,7 @@ There are three types of comments in {\stk}:
\begin{enumerate}
\item a semicolon (;) indicates the start of a comment.
This kind of comment extends to the end of the line (as described in \rrrr).
\item multi-lines comment use the classical lisp conventions: a comment
\item multi-lines comment use the classical Lisp convention: a comment
begins with \verb+#|+ and ends with \verb+|#+.
\item comments can also be introduced by \sharpsign$!$. This
extension is particularly useful for building {\stk} scripts. On most
@@ -88,14 +88,13 @@ This kind of comment extends to the end of the line (as described in \rrrr).
\item[\tt\sharpsign.<expr>] is read as the evaluation of the Scheme
expression {\tt <expr>}. The evaluation is done during the
\ide{read} process, when the \var{\sharpsign.} is encountered.
Evaluation is done in the global environment.
Evaluation is done in the environment of the current module.
\begin{scheme}
(define foo 1)
\sharpsign.foo \lev 1
'(foo \sharpsign.foo \sharpsign.(+ foo foo)) \lev (foo 1 2)
(let ((foo 2))
\sharpsign.foo) \lev 1
\end{scheme}
\end{description}
@@ -353,7 +352,30 @@ keywords into account. On keywords, \ide{eq?} behaves like \ide{eqv?}.
\proto{list?}{ obj}{procedure}
\proto{list}{ \var{obj} \dotsfoo}{procedure}
\proto{length}{ list}{procedure}
\proto{append}{ list \dotsfoo}{procedure}
\proto{append}{ list \dotsfoo}{procedure}}
\saut
\doc
\end{entry}
\begin{entry}{%
\proto{append!}{ list \ldots}{procedure}}
\saut
Returns a list consisting of the elements of the first \var{list}
followed by the elements of the other lists, as with \texttt{append}.
The differenece with \texttt{append} is that the arguments are {\em
changed} rather than {\em copied}.
\begin{scheme}
(append! '(1 2) '(3 4) '(5 6)) \lev '(1 2 3 4 5 6)
(let ((l1 '(1 2))
(l2 '(3 4))
(l3 '(5 6)))
(append! l1 l2 l3)
(list l1 l2 l3)) \lev ((1 2 3 4 5 6) (3 4 5 6) (5 6))
\end{scheme}
\end{entry}
\begin{entry}{%
\proto{reverse}{ list}{procedure}
\proto{list-tail}{ list \vr{k}}{procedure}
\proto{list-ref}{ list \vr{k}}{procedure}
@@ -387,6 +409,17 @@ have been deleted. The predicate used to test the presence of \var{obj} in
\end{scheme}
\end{entry}
\begin{entry}{%
\proto{last-pair}{ list}{procedure}}
\saut
Returns the last pair of \var{list}\footnote{\ide{Last-pair} was a standard
procedure in {\rthree}.}.
\begin{scheme}
(last-pair '(1 2 3)) \lev 3
(last-pair '(1 2 . 3)) \lev (2 . 3)
\end{scheme}
\end{entry}
\begin{entry}{%
\proto{list*}{ obj}{procedure}}
\saut
@@ -1275,15 +1308,11 @@ undefined. Otherwise, it returns the handler currently associated to
\begin{entry}{%
\proto{load}{ filename}{procedure}
\proto{load}{ filename environment}{procedure}}
\proto{load}{ filename module}{procedure}}
\saut
The first form is identical to \rrrr{}. The second one loads the
content of \var{filename} in the given \var{environment}. So, the first
form is equivalent to
\begin{scheme}
(load filename (global-environment))
\end{scheme}
content of \var{filename} in the given \var{module} environment.
\begin{note}
The \var{load} primitive has been extended to allow loading of
object files, though this is not implemented on all systems.
@@ -1296,13 +1325,13 @@ form is equivalent to
\begin{entry}{%
\proto{try-load}{ filename}{procedure}
\proto{try-load}{ filename environment}{procedure}}
\proto{try-load}{ filename module}{procedure}}
\saut
Tries to load the file named \var{filename}. If \var{filename} exists and is
readable, it is loaded, and \ide{try-load} returns {\schtrue}.
Otherwise, the result of the call is {\schfalse}.
The second form of \var{try-load} tries to load the content of \var{filename}
in the given \var{environment}.
in the given \var{module} environment.
\end{entry}
\begin{entry}{%
@@ -1310,16 +1339,17 @@ in the given \var{environment}.
\saut
Defines \hyper{symbol}s as autoload symbols associated to file
\var{filename}.
Fisrt evaluation of an autoload symbol will cause the loading of its
associated file. \var{Filename} must provide a definition for the symbol which
First evaluation of an autoload symbol will cause the loading of its
associated file in the module environment in which the autoload was done.
\var{Filename} must provide a definition for the symbol which
lead to its loading, otherwise an error is signaled.
\end{entry}
\begin{entry}{%
\proto{autoload?}{ symbol}{procedure}}
\proto{autoload?}{ symbol module}{procedure}}
\saut
Returns {\schtrue} if \var{symbol} is an autoload symbol; returns {\schfalse}
otherwise.
Returns {\schtrue} if \var{symbol} is an autoload symbol in \var{module}
environment ; returns {\schfalse} otherwise.
\end{entry}
\begin{entry}{%
+54 -6
View File
@@ -3,7 +3,7 @@
%
% Author: Erick Gallesio [eg@unice.fr]
% Creation date: ??-Nov-1993 ??:??
% Last file update: 6-Apr-1998 11:25
% Last file update: 20-Apr-1998 11:58
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -342,11 +342,11 @@ they are automatically exported.
\end{entry}
\begin{entry}{%
\proto{with-module}{ module \hyperi{expr} \hyperii{expr} \ldots} {syntax}}
\proto{with-module}{ name \hyperi{expr} \hyperii{expr} \ldots} {syntax}}
\saut
Evaluates the expressions of \hyperi{expr} \hyperii{expr} \ldots in
the \var{module} environment. \var{Module} must have been created
the environment of module \var{name}. Module \var{name} must have been created
previously by a \ide{define-module}. The result of \ide{with-module}
is the result of the evaluation of the last \hyper{expr}.
@@ -376,6 +376,34 @@ Returns the current-module.
\end{scheme}
\end{entry}
\begin{entry}{%
\proto{select-module}{ name} {syntax}}
\saut
Evaluates the expressions which follows in module \var{name}
environment. Module \var{name} must have been created previously by a
\ide{define-module}. The result of \ide{select-module} is undefined.
\ide{Select-module} is particularly useful when debugging since it
allows to place toplevel evaluation in a particular module. The
following transcript shows an usage of
\ide{select-module}\footnote{This transcript uses the default value for the
function \texttt{repl-display-prompt} (see page \pageref{repl-display-prompt})
which displays the name of the current module in the prompt.}:
\begin{scheme}
STk> (define foo 1)
STk> (define-module bar
(define foo 2))
STk> foo
1
STk> (select-module bar)
bar> foo
2
bar> (select-module STk)
STk>
\end{scheme}
\end{entry}
\begin{entry}{%
\proto{module-name}{ module} {procedure}}
\saut
@@ -691,9 +719,6 @@ which does not exist).
\proto{glob}{ \vri{pattern} \vrii{pattern} \dotsfoo} {procedure}}
\saut
%%%%%%%%%%%%%% Irgendwann h"alt Gott seine Arme auf:
%%%%%%%%%%%%%% BIS HIERHIN UND NICHT WEITER!
The code for \ide{glob} is taken from the Tcl library. It performs
file name ``globbing'' in a fashion similar to the csh shell.
\ide{Glob} returns a list of the filenames that match at least one of
@@ -727,6 +752,29 @@ check for existence is made unless a pattern contains a ?, \etoile, or
construct.
\end{entry}
\begin{entry}{%
\proto{remove-file}{ string} {procedure}}
\saut
Removes the file whose path name is given in \var{string}.
The result of \ide{remove-file} is undefined.
\end{entry}
\begin{entry}{%
\proto{rename-file}{ \vri{string} \vrii{string}} {procedure}}
\saut
Renames the file whose path-name is contained in \vri{string} in the path
name given by \vrii{string}. The result of \ide{rename-file} is undefined.
\end{entry}
\begin{entry}{%
\proto{temporary-file-name}{ string} {procedure}}
\saut
Generates a unique temporary file name. The value returned by
\ide{temporary-file-name} is the newly generated name of {\schfalse}
if a unique name cannot be generated.
\end{entry}
\begin{entry}{%
\proto{getcwd}{} {procedure}}
\saut
Binary file not shown.
+7973 -7557
View File
File diff suppressed because it is too large Load Diff
+5 -2
View File
@@ -13,10 +13,10 @@
%
% Author: Erick Gallesio [eg@unice.fr]
% Creation date: ??-Nov-1993 ??:??
% Last file update: 10-Apr-1998 09:07
% Last file update: 20-Apr-1998 10:07
%
\documentclass[10pt,a4paper]{book}
\documentclass[11pt,a4paper]{book}
\usepackage{a4wide}
\usepackage{fancyheadings}
\usepackage{epsfig}
@@ -49,6 +49,9 @@
\newcommand{\stklos}{{\sc STklos}}
\newcommand{\doc}{{\em Identical to R$^{4}$RS.}}
\newcommand{\rrrr}{{\em R$^{4}\!RS$}}
\newcommand{\rthree}{{\em R$^{3}\!RS$}}
\newcommand{\rfour}{{\em R$^{4}\!RS$}}
\newcommand{\rfive}{{\em R$^{5}\!RS$}}
\newcommand{\saut}{\vskip2mm}
\newcommand{\tilda}{{\tt\char126}}
\newcommand{\etoile}{{\tt\char42}}