%
% STk Reference manual (Appendix: Using the Tk toolkit)
%
%           Author: Erick Gallesio [eg@unice.fr]
%    Creation date: ??-Nov-1993 ??:??
% Last file update: 27-Sep-1999 14:42 (eg)
%

\newcommand{\schglob}[1]{*#1*}

This appendix summarizes the main differences between the {\stk} Scheme
implementation and the language described in {\rrrr}.

\section{Symbols}

{\stk} symbol syntax has been augmented to allow case significant symbols. 
This extension is discussed in \ref{symbolsection}.

\smallskip {\stk} also defines some symbols in the global environment
which are described below:

\begin{itemize}

\item {\tt\schglob{debug}}\schindex{\schglob{debug}}. Setting
    {\tt \schglob{debug}} to {\schtrue} prevents macro inlining and 
    expression recoding (see~\ref{uncode}).
        
\item {\tt\schglob{gc-verbose}}\schindex{\schglob{gc-verbose}}. If 
      {\tt\schglob{gc-verbose}} is {\schtrue}, a message will be printed before
      and after each run of garbage collector. The message is printed on the
      standard error stream.
     
\item {\tt\schglob{load-verbose}}\schindex{\schglob{load-verbose}}. If 
      {\tt\schglob{load-verbose}} is {\schtrue}, the absolute path name of
      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
      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}
      shell variable. See {\tt stk(1)} for more details.

\item  {\tt\schglob{load-suffixes}}\schindex{\schglob{load-suffixes}}
      must contain a list of strings. When the system try to load a
      file in a given directory (according to {\tt\schglob{load-path}}
      value), it will first try to load it without suffix. If this
      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{argc}}\schindex{\schglob{argc}} contains the
       number of arguments  (0 if none), not including interpreter
       options. See {\tt stk(1)} for more details.

\item {\tt\schglob{argv}}\schindex{\schglob{argv}} contains a Scheme 
      list whose elements are the arguments (not including the interpreter
      options), in order, or an empty list if there are no arguments.
      See {\tt stk(1)} for more details.

\item {\tt\schglob{program-name}}\schindex{\schglob{program-name}} contains
      the file name specified with the {\tt -file} option, if present.
      Otherwise, it contains the name through which the interpreter was invoked.
      See {\tt stk(1)} for more details.

\item {\tt\schglob{print-banner}}\schindex{\schglob{print-banner}}. If 
      {\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 by the command \var{help}\ref{help}. 
  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
numbers and rational numbers (which are defined but not required in \rrrr) are
not implemented. The lack of these types implies that some functions of
{\rrrr} are not defined.

Some types which are not defined in {\rrrr} are implemented in {\stk}. Those 
types are listed below:
\begin{itemize}
\item input string port type (\ref{inputoutput})
\item output string port type (\ref{inputoutput})
\item keyword type (\ref{keywords})
\item Tk command type (\ref{tkcommand})
\item environment type (\ref{environment})
\item macro type (\ref{macros})
\item address type (\ref{addresses})
\item hash table type (\ref{hashtables})
\item Regular expression type (\ref{regexp-type})
\item process type (\ref{process-type})
\item socket type (\ref{socket-type})
\end{itemize}

\section{Procedures}

The following procedures are required by {\rrrr} and are not implemented in the
{\stk} interpreter.
\begin{itemize}
\item{transcript-off}\schindex{transcript-off}
\item{transcript-on}\schindex{transcript-on}
\end{itemize}

\ide{Transcript-off} and \ide{transcript-on} can be simulated with 
various Unix tools such as {\tt script} or {\tt fep}.

\vskip3mm
The following procedures are not implemented in the {\stk} interpreter whereas
they are defined in {\rrrr} (but not required). They are all 
related to complex or rational numbers.
\begin{itemize}
\item{numerator}\schindex{numerator}
\item{denominator}\schindex{denominator}
\item{rationalize}\schindex{rationalize}
\item{make-rectangular}\schindex{make-rectangular}
\item{make-polar}\schindex{make-polar}
\item{real-part}\schindex{real-part}
\item{imag-part}\schindex{imag-part}
\item{magnitude}\schindex{magnitude}
\item{angle}\schindex{angle}
\end{itemize}



%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "manual"
%%% End: 
