% % STk Reference manual (Appendix: Using the Tk toolkit) % % Author: Erick Gallesio [eg@unice.fr] % Creation date: ??-Nov-1993 ??:?? % Last file update: 20-Apr-1998 11:54 % \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. 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: