Commit of 3.99.1 version
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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}}
|
||||
|
||||
@@ -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}{%
|
||||
|
||||
@@ -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
File diff suppressed because it is too large
Load Diff
@@ -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}}
|
||||
|
||||
Reference in New Issue
Block a user