@iftex
@finalout
@end iftex
-@comment $Id: user.texinfo,v 1.54 1999/02/26 04:09:41 cph Exp $
+@comment $Id: user.texinfo,v 1.55 1999/02/26 05:39:41 cph Exp $
@comment %**start of header (This is for running Texinfo on a region.)
@setfilename user.info
@settitle MIT Scheme User's Manual
@titlepage
@title{MIT Scheme User's Manual}
-@subtitle Edition 1.54
+@subtitle Edition 1.55
@subtitle for Scheme Release 7.5
-@subtitle 25 February 1999
+@subtitle 26 February 1999
@author by Stephen Adams
@author Chris Hanson
@author and the MIT Scheme Team
drive letters, @sc{cr-lf} line termination, and (potentially) the
hideous 8.3 short filenames.
+@cindex Web site
@cindex FTP site
-The primary distribution site for this software is the @sc{ftp} server
-@samp{swiss-ftp.ai.mit.edu}. Although our software is distributed from
-other sites and in other media, the complete distribution and the most
-recent release is always available at our site.
+The primary distribution site for this software is
+
+@example
+http://www-swiss.ai.mit.edu/scheme-home.html
+ftp://swiss-ftp.ai.mit.edu/pub
+@end example
+
+@noindent
+Although our software is distributed from other sites and in other
+media, the complete distribution and the most recent release is always
+available at our site.
@cindex bugs, reporting
@cindex reporting bugs
@item
For many systems, a standard place to put executable files is the
-directory @file{/usr/local/bin}. If this is true for your system, we
+directory@* @file{/usr/local/bin}. If this is true for your system, we
suggest installing the executables there. Otherwise, you probably
have some other directory that serves the same purpose; edit
@file{install.sh} and change the definition of the shell variable
@file{/usr/local/lib/mit-scheme/hppacach.mod}, but if you install Scheme
in a non-standard place it will be different. For example, if you
install Scheme as @file{/usr/foo/mit-scheme/}, the database file is
-called @file{/usr/foo/mit-scheme/hppacach.mod}.
+called@* @file{/usr/foo/mit-scheme/hppacach.mod}.
@item
Assuming that Scheme is installed in the normal place, update the
You may move the @file{lib\} directory anywhere you like. You may
rename it to anything you like. (Here at MIT, we use
@file{c:\scheme\lib}.) After you have chosen where it will be located,
-set the @samp{MITSCHEME_LIBRARY_PATH} environment variable in
+set the @code{MITSCHEME_LIBRARY_PATH} environment variable in
@file{config.sys} to be that location.
For example, if you decide to store the directory as @file{c:\schdata},
order for the changes to take effect.)
You can override the setting of this environment variable with the
-@samp{-library} command-line option to Scheme, for example:
+@code{-library} command-line option to Scheme, for example:
@example
scheme -library d:\scheme\lib
@end example
@noindent
-If you supply a @samp{-library} option, it is not necessary to have the
+If you supply a @code{-library} option, it is not necessary to have the
environment variable defined. For example, instead of editing
@file{config.sys}, you might create a @file{.cmd} file to invoke Scheme
-and pass it the @samp{-library} option automatically.
+and pass it the @code{-library} option automatically.
@item
@emph{Optional:} Move the @file{doc\} directory anywhere you like, or
@item
@file{compiler.com} contains the basic runtime environment and the Liar
native-code compiler. This is the image file that is loaded when Scheme
-is started with the @samp{-compiler} command-line option.
+is started with the @code{-compiler} command-line option.
@item
@file{edwin.com} contains the basic runtime environment and the Edwin
text editor. This is the image file that is loaded when Scheme is
-started with the @samp{-edwin} command-line option.
+started with the @code{-edwin} command-line option.
@item
@file{all.com} contains the basic runtime environment, the Liar
@item
@file{console.txt} describes the procedures that can be used to control
-the appearance of the console window (i.e. Scheme's main window).
+the appearance of the console window (i.e.@: Scheme's main window).
@end itemize
@noindent
Note: the User's Manual and Reference Manual are available in other
forms, specifically: as PostScript files and as GNU Info files. These
alternate forms of documentation may be obtained from our @sc{ftp} site,
-@file{swiss-ftp.ai.mit.edu}.
+@file{ftp://swiss-ftp.ai.mit.edu}.
@node Environment Variables for OS/2 Installation, , Documentation for OS/2 Installation, OS/2 Installation
@subsection Environment Variables
@findex MITSCHEME_LIBRARY_PATH
says where to find Scheme's data files. This is the only required
environment variable (but is not required when Scheme is invoked with
-the @samp{-library} command-line option).
+the @code{-library} command-line option).
@example
SET MITSCHEME_LIBRARY_PATH=C:\SCHEME\LIB
tells Scheme where to find debugging information for the runtime system.
The default value for this environment variable is a subdirectory
@file{src\} located in the directory specified by
-@samp{MITSCHEME_LIBRARY_PATH}.
+@code{MITSCHEME_LIBRARY_PATH}.
@example
SET MITSCHEME_INF_DIRECTORY=C:\SCHEME\LIB\SRC
@item bin\
The executable programs @file{scheme.exe} and @file{bchschem.exe}, the
libraries @file{scheme16.dll}, @file{scheme31.dll} and
-@file{scheme32.dll}, and the libraries @file{dibutils.dll} and
+@file{scheme32.dll}, and the libraries@* @file{dibutils.dll} and
@file{pmgrpapi.dll}.
@item doc\
combined into a single file. @file{.com} files are not MSDOS or Windows
programs so do not try to run them.
-@file{lib\compiler.com} contains the runtime system (i.e.@* standard
+@file{lib\compiler.com} contains the runtime system (i.e.@: standard
Scheme definitions) plus the native code compiler. @file{lib\edwin.com}
contains the runtime system plus the Edwin editor. @file{lib\all.com}
contains the runtime system, the compiler and Edwin.
You may move the @file{lib\} directory anywhere you like. You may
rename it to anything you like. (Here at MIT, we use
@file{c:\scheme\lib}.) After you have chosen where it will be located,
-set the @samp{MITSCHEME_LIBRARY_PATH} environment variable to be that
+set the @code{MITSCHEME_LIBRARY_PATH} environment variable to be that
location.
For example, if you decide to store the directory as @file{d:\schdata},
@file{autoexec.bat} or by using the `System' item in the Control Panel.
-You can override the setting of @samp{MITSCHEME_LIBRARY_PATH} with the
-@samp{-library} command-line option to Scheme, for example:
+You can override the setting of @code{MITSCHEME_LIBRARY_PATH} with the
+@code{-library} option to Scheme, for example:
@example
scheme -library d:\schdata
@end example
@noindent
-If you always supply a @samp{-library} option, it is not necessary to
+If you always supply a @code{-library} option, it is not necessary to
have the environment variable defined. For example, instead of editing
@file{autoexec.bat}, you might create a @file{.bat} file or a shortcut
-(icon) to invoke Scheme and pass it the @samp{-library} option
+(icon) to invoke Scheme and pass it the @code{-library} option
automatically.
@item
#[compiled-procedure 13 ("pp" #x2) #xF #x646BF7]
@end example
-Debugging information files can be installed in another place.@* In this
-case the @samp{MITSCHEME_INF_DIRECTORY} environment variable should be
+Debugging information files can be installed in another place. In this
+case the @code{MITSCHEME_INF_DIRECTORY} environment variable should be
set to the directory path where you unzipped the @file{.zip} files.
@end enumerate
@cindex compiler, starting
If the compiler is supported for your machine, you can invoke it by
-giving Scheme the @samp{-compiler} option:
+giving Scheme the @code{-compiler} option:
@example
scheme -compiler
print something like ``Not enough memory for this configuration'' and
halt when started), so you can write a shell script (Unix), @file{.bat}
file (Windows), or @file{.cmd} file (OS/2) that will invoke Scheme with
-the appropriate @samp{-heap} and other parameters.
+the appropriate @code{-heap} and other parameters.
@item
@cindex init file
You can use both of these files to define new procedures or commands, or
to change defaults in the system.
-The @samp{-no-init-file} command-line option causes Scheme to ignore the
-@file{.scheme.init} file (@pxref{Command-Line Options}).
+The @code{-no-init-file} command-line option causes Scheme to ignore
+the@* @file{.scheme.init} file (@pxref{Command-Line Options}).
@item
@dfn{Environment variables}. Most microcode parameters, and some
for constant space; the stack and extra microcode storage is not
included in this adjustment. Previous versions of MIT Scheme needed to
be told the amount of constant space that was required when loading
-bands with the @samp{-band} option. Dynamic adjustment of the heap and
+bands with the @code{-band} option. Dynamic adjustment of the heap and
constant space avoids this problem; now all that is required is that the
total space be sufficient.
starts with @samp{/}), then no search occurs --- @var{filename} is
tested for readability and then used directly. If this option isn't
given, the filename is the value of the environment variable
-@samp{MITSCHEME_BAND}, or if that isn't defined, @file{runtime.com}; in
+@code{MITSCHEME_BAND}, or if that isn't defined, @file{runtime.com}; in
these cases the library directories are searched, but not the working
directory.
@findex -compiler
@findex MITSCHEME_COMPILER_BAND
This option specifies defaults appropriate for loading the compiler. It
-specifies the use of large sizes, exactly like @samp{-large}; if the
-@samp{-band} option is also specified, that is the only effect of this
+specifies the use of large sizes, exactly like @code{-large}; if the
+@code{-band} option is also specified, that is the only effect of this
option. Otherwise, the default band's filename is the value of the
-environment variable @samp{MITSCHEME_COMPILER_BAND}, if defined, or
+environment variable @code{MITSCHEME_COMPILER_BAND}, if defined, or
@file{compiler.com}; the library directories are searched to locate this
-file. Note that the @samp{-compiler} option is available only on
+file. Note that the @code{-compiler} option is available only on
machines with compiled-code support.
@item -edwin
@findex -edwin
@findex MITSCHEME_EDWIN_BAND
This option specifies defaults appropriate for loading the editor. It
-specifies the use of large sizes, exactly like @samp{-large}; if the
-@samp{-band} option is also specified, that is the only effect of this
+specifies the use of large sizes, exactly like @code{-large}; if the
+@code{-band} option is also specified, that is the only effect of this
option. Otherwise, the default band's filename is the value of the
-environment variable @samp{MITSCHEME_EDWIN_BAND}, if defined, or
+environment variable @code{MITSCHEME_EDWIN_BAND}, if defined, or
@file{edwin.com}; the library directories are searched to locate this
-file. Note that the @samp{-edwin} option is available only on machines
+file. Note that the @code{-edwin} option is available only on machines
with compiled-code support.
@item -large
@noindent
There are reasonable built-in defaults for all of these environment
variables, should any of them be undefined. Note that any or all of the
-defaults can be individually overridden by the @samp{-heap},
-@samp{-constant}, and @samp{-stack} options.
+defaults can be individually overridden by the @code{-heap},
+@code{-constant}, and @code{-stack} options.
@findex print-gc-statistics
Note: the Scheme expression @samp{(print-gc-statistics)} shows how much
Sets the library search path to @var{path}. This is a
list of directories that is searched to find various library files, such
as bands. If this option is not given, the value of the environment
-variable @samp{MITSCHEME_LIBRARY_PATH} is used; if that isn't defined,
+variable @code{MITSCHEME_LIBRARY_PATH} is used; if that isn't defined,
the default is used.
On Unix, the elements of the list are separated by colons, and the
the microcode's structure). @var{Filename} is searched for in the
working directory and the library directories. If this option isn't
given, the filename is the value of the environment variable
-@samp{MITSCHEME_UTABMD_FILE}, or if that isn't defined,
+@code{MITSCHEME_UTABMD_FILE}, or if that isn't defined,
@file{utabmd.bin}; in these cases the library directories are searched,
but not the working directory.
-@samp{-utab} is an alternate name for the @samp{-utabmd} option; at most
+@code{-utab} is an alternate name for the @code{-utabmd} option; at most
one of these options may be given.
@item -fasl @var{filename}
Specifies that a @dfn{cold load} should be performed, using
@var{filename} as the initial file to be loaded. If this option isn't
given, a normal load is performed instead. This option may not be used
-together with the @samp{-band} option. This option is useful only for
+together with the @code{-band} option. This option is useful only for
maintenance and development of the MIT Scheme runtime system.
@end table
@findex MITSCHEME_GC_DIRECTORY
Specifies that @var{directory} should be used to create files for
garbage collection. If the option is not given, the value of
-environment variable @samp{MITSCHEME_GC_DIRECTORY} is used instead, and
+environment variable @code{MITSCHEME_GC_DIRECTORY} is used instead, and
if that is not defined, @file{/tmp} is used.
@item -gc-file @var{filename}
@findex MITSCHEME_GC_FILE
Specifies that @var{filename} should be used for garbage collection. If
the option is not given, the value of environment variable
-@samp{MITSCHEME_GC_FILE} is used, and if this is not defined, a unique
+@code{MITSCHEME_GC_FILE} is used, and if this is not defined, a unique
filename is generated in the directory specified with
-@samp{-gc-directory}.
+@code{-gc-directory}.
-@samp{-gcfile} is an alias for @samp{-gc-file}; at most one of these
+@code{-gcfile} is an alias for @code{-gc-file}; at most one of these
options should be specified.
@item -gc-keep
@findex -gc-start-position
@findex MITSCHEME_GC_START_POSITION
Specifies the first byte position in @sc{gc} file at which the Scheme
-process can write. If not given, the value of the environment variable
-@samp{MITSCHEME_GC_START_POSITION} is used, and if that is not defined,
-@samp{0} is used, meaning the beginning of the file. The area of the
-file used (and locked if possible) is the region between
-@samp{-gc-start-position} and @samp{-gc-end-position}.
+process can write. If not given, the value of the environment
+variable @code{MITSCHEME_GC_START_POSITION} is used, and if that is
+not defined, @samp{0} is used, meaning the beginning of the file. The
+area of the file used (and locked if possible) is the region between
+@code{-gc-start-position} and @code{-gc-end-position}.
@item -gc-end-position @var{number}
@findex -gc-end-position
@findex MITSCHEME_GC_END_POSITION
Specifies the last byte position in @sc{gc} file at which the Scheme
-process can write. If not given, the value of the environment variable
-@samp{MITSCHEME_GC_END_POSITION} is used, and if that is not defined,
-the sum of the start position (as specified by
-@samp{-gc-start-position}) and the heap size is used. The area of the
+process can write. If not given, the value of the environment
+variable @code{MITSCHEME_GC_END_POSITION} is used, and if that is not
+defined, the sum of the start position (as specified by
+@code{-gc-start-position}) and the heap size is used. The area of the
file used (and locked if possible) is the region between
-@samp{-gc-start-position} and @samp{-gc-end-position}.
+@code{-gc-start-position} and @code{-gc-end-position}.
@item -gc-window-size @var{blocks}
@findex -gc-window-size
@findex MITSCHEME_GC_WINDOW_SIZE
Specifies the size of the windows into new space during garbage
collection. If this option is not given, the value of environment
-variable @samp{MITSCHEME_GC_WINDOW_SIZE} is used instead, and if that is
-not defined, the value 16 is used.
+variable @code{MITSCHEME_GC_WINDOW_SIZE} is used instead, and if that
+is not defined, the value 16 is used.
@end table
@noindent
The following command-line options are only used by an experimental
-version of @file{bchscheme} that uses Unix System V-style shared memory,
-and then only if the @file{gcdrone} program is installed in the library
-directory.
+version of@* @file{bchscheme} that uses Unix System V-style shared
+memory, and then only if the @file{gcdrone} program is installed in the
+library directory.
@table @code
@item -gc-drone @var{program}
@findex MITSCHEME_GC_DRONE
Specifies that @var{program} should be used as the drone program for
overlapped @sc{i/o} during garbage collection. If the option is not
-given, the value of environment variable @samp{MITSCHEME_GC_DRONE} is
+given, the value of environment variable @code{MITSCHEME_GC_DRONE} is
used instead, and if that is not defined, @file{gcdrone} is used.
@item -gc-read-overlap @var{n}
@findex MITSCHEME_GC_READ_OVERLAP
Specifies that Scheme should delegate at most @var{n} simultaneous disk
read operations during garbage collection. If the option is not given,
-the value of environment variable @samp{MITSCHEME_GC_READ_OVERLAP} is
+the value of environment variable @code{MITSCHEME_GC_READ_OVERLAP} is
used instead, and if that is not defined, @samp{0} is used, disabling
overlapped reads.
@findex MITSCHEME_GC_WRITE_OVERLAP
Specifies that Scheme should delegate at most @var{n} simultaneous disk
write operations during garbage collection. If the option is not given,
-the value of environment variable @samp{MITSCHEME_GC_WRITE_OVERLAP} is
+the value of environment variable @code{MITSCHEME_GC_WRITE_OVERLAP} is
used instead, and if that is not defined, @samp{0} is used, disabling
overlapped writes.
@end table
complete state of the Scheme process; restoring this file continues the
computation that Scheme was performing at the time the file was written.
-Normally this file is never written, but the @samp{-suspend-file} option
+Normally this file is never written, but the @code{-suspend-file} option
enables writing of this file.
@item -eval
Unix, and @file{scheme.exe} and @file{bchschem.exe} on the PC).
@table @asis
-@item @samp{MITSCHEME_BAND} (default: @file{runtime.com} on the library path)
+@item @code{MITSCHEME_BAND} (default: @file{runtime.com} on the library path)
@findex MITSCHEME_BAND
-The initial band to be loaded. Overridden by @samp{-band},
-@samp{-compiler}, or @samp{-edwin}.
+The initial band to be loaded. Overridden by @code{-band},
+@code{-compiler}, or @code{-edwin}.
@item @code{MITSCHEME_COMPILER_BAND} (default: @file{compiler.com} on the library path)
@findex MITSCHEME_COMPILER_BAND
-The initial band to be loaded if the @samp{-compiler} option is given.
-Overridden by @samp{-band}.
+The initial band to be loaded if the @code{-compiler} option is given.
+Overridden by @code{-band}.
@item @code{MITSCHEME_EDWIN_BAND} (default: @file{edwin.com} on the library path)
@findex MITSCHEME_EDWIN_BAND
-The initial band to be loaded if the @samp{-edwin} option is given.
-Overridden by @samp{-band}.
+The initial band to be loaded if the @code{-edwin} option is given.
+Overridden by @code{-band}.
@item @code{MITSCHEME_LARGE_CONSTANT} (default: @samp{1000})
@findex MITSCHEME_LARGE_CONSTANT
-The size of constant space, in 1024-word blocks, if the @samp{-large},
-@samp{-compiler}, or @samp{-edwin} options are given. Overridden by
-@samp{-constant}. Note: default depends on machine; on most machines it
+The size of constant space, in 1024-word blocks, if the @code{-large},
+@code{-compiler}, or @code{-edwin} options are given. Overridden by
+@code{-constant}. Note: default depends on machine; on most machines it
is larger than @samp{1000}.
@item @code{MITSCHEME_LARGE_HEAP} (default: @samp{1000})
@findex MITSCHEME_LARGE_HEAP
-The size of the heap, in 1024-word blocks, if the @samp{-large},
-@samp{-compiler}, or @samp{-edwin} options are given. Overridden by
-@samp{-heap}.
+The size of the heap, in 1024-word blocks, if the @code{-large},
+@code{-compiler}, or @code{-edwin} options are given. Overridden by
+@code{-heap}.
@item @code{MITSCHEME_LARGE_STACK} (default: @samp{100})
@findex MITSCHEME_LARGE_STACK
-The size of the stack, in 1024-word blocks, if the @samp{-large},
-@samp{-compiler}, or @samp{-edwin} options are given. Overridden by
-@samp{-stack}.
+The size of the stack, in 1024-word blocks, if the @code{-large},
+@code{-compiler}, or @code{-edwin} options are given. Overridden by
+@code{-stack}.
@item @code{MITSCHEME_LIBRARY_PATH}
@findex MITSCHEME_LIBRARY_PATH
@item @code{MITSCHEME_SMALL_CONSTANT} (default: @samp{450})
@findex MITSCHEME_SMALL_CONSTANT
The size of constant space, in 1024-word blocks, if the size options are
-not given. Overridden by @samp{-constant}, @samp{-large},
-@samp{-compiler}, or @samp{-edwin}. Note: default depends on machine;
+not given. Overridden by @code{-constant}, @code{-large},
+@code{-compiler}, or @code{-edwin}. Note: default depends on machine;
on most machines it is larger than @samp{450}.
@item @code{MITSCHEME_SMALL_HEAP} (default: @samp{250})
@findex MITSCHEME_SMALL_HEAP
The size of the heap, in 1024-word blocks, if the size options are not
-given. Overridden by @samp{-heap}, @samp{-large}, @samp{-compiler}, or
-@samp{-edwin}.
+given. Overridden by @code{-heap}, @code{-large}, @code{-compiler}, or
+@code{-edwin}.
@item @code{MITSCHEME_SMALL_STACK} (default: @samp{100})
@findex MITSCHEME_SMALL_STACK
The size of the stack, in 1024-word blocks, if the size options are not
-given. Overridden by @samp{-stack}, @samp{-large}, @samp{-compiler}, or
-@samp{-edwin}.
+given. Overridden by @code{-stack}, @code{-large}, @code{-compiler}, or
+@code{-edwin}.
@item @code{MITSCHEME_UTABMD_FILE} (default: @file{utabmd.bin} in the library path)
@findex MITSCHEME_UTABMD_FILE
-The file containing the microcode tables. Overridden by @samp{-utabmd}
-and @samp{-utab}. It is only necessary when re-building
+The file containing the microcode tables. Overridden by @code{-utabmd}
+and @code{-utab}. It is only necessary when re-building
@file{runtime.com}.
@end table
@item @code{MITSCHEME_GC_DIRECTORY} (default: @file{/tmp})
@findex MITSCHEME_GC_DIRECTORY
The directory in which @sc{gc} files are written. Overridden by
-@samp{-gc-directory}.
+@code{-gc-directory}.
@item @code{MITSCHEME_GC_FILE} (default: @file{GCXXXXXX})
@findex MITSCHEME_GC_FILE
The name of the file to use for garbage collection. If it ends in 6 Xs,
the Xs are replaced by a letter and process id of the scheme process,
-thus generating a unique name. Overridden by @samp{-gc-file}.
+thus generating a unique name. Overridden by @code{-gc-file}.
@item @code{MITSCHEME_GC_START_POSITION} (default: @samp{0})
@findex MITSCHEME_GC_START_POSITION
The first position in the @sc{gc} file to use. Overridden by
-@samp{-gc-start-position}.
+@code{-gc-start-position}.
@item @code{MITSCHEME_GC_END_POSITION} (default: @var{start-position}+@var{heap-size})
@findex MITSCHEME_GC_END_POSITION
The last position in the @sc{gc} file to use. Overridden by
-@samp{-gc-end-position}.
+@code{-gc-end-position}.
@item @code{MITSCHEME_GC_WINDOW_SIZE} (default: @samp{16})
@findex MITSCHEME_GC_WINDOW_SIZE
The size in blocks of windows into new space (in the @sc{gc} file).@*
-Overridden by @samp{-gc-window-size}.
+Overridden by @code{-gc-window-size}.
@end table
@noindent
@item @code{MITSCHEME_GC_DRONE} (default: @file{gcdrone})
@findex MITSCHEME_GC_DRONE
The program to use as the @sc{i/o} drone during garbage collection.@*
-Overridden by @samp{-gc-drone}.
+Overridden by @code{-gc-drone}.
@item @code{MITSCHEME_GC_READ_OVERLAP} (default: @samp{0})
@findex MITSCHEME_GC_READ_OVERLAP
The maximum number of simultaneous read operations.@*
-Overridden by @samp{-gc-read-overlap}.
+Overridden by @code{-gc-read-overlap}.
@item @code{MITSCHEME_GC_WRITE_OVERLAP} (default: @samp{0})
@findex MITSCHEME_GC_WRITE_OVERLAP
The maximum number of simultaneous write operations.@*
-Overridden by @samp{-gc-write-overlap}.
+Overridden by @code{-gc-write-overlap}.
@end table
@node Runtime Environment Variables, Edwin Environment Variables, Bchscheme Environment Variables, Environment Variables
@item @code{ESHELL}
@findex ESHELL
-Unix and OS/2 only.
Filename of the shell program to use in shell buffers. If not defined,
@samp{SHELL} is used instead.
@item @code{SHELL} (default: @file{/bin/sh} (Unix), @file{cmd.exe} (OS/2))
@findex SHELL
-Unix and OS/2 only.
Filename of the shell program to use in shell buffers and when executing
shell commands. Used to initialize the @code{shell-path-name} editor
variable.
@item @code{PATH}
@findex PATH
-Unix and OS/2 only.
Used to initialize the @code{exec-path} editor variable, which is
subsequently used for finding programs to be run as subprocesses.
You should specifiy only fixed-width fonts as variable width fonts are
not drawn correctly.
-Once in Edwin, the font can be changed with the @samp{set-font} and
+Once in Edwin, the font can be changed with the @samp{set-font} and@*
@samp{set-default-font} commands.
@item @code{MITSCHEME_GEOMETRY} (default: @samp{-1,-1,-1,-1})
@item @code{MITSCHEME_BACKGROUND} (default: according to desktop color scheme)
@findex MITSCHEME_BACKGROUND
A value specifying the window background color. See
-@samp{MITSCHEME_FOREGROUND}.
+@code{MITSCHEME_FOREGROUND}.
@item @code{HOMEDRIVE}
@itemx @code{HOMEPATH}
in the icon @var{Command line}.
@item
-I you specify the @samp{-library} command line option then you do not
-have to worry about the @samp{MITSCHEME_LIBRARY_PATH} environment
+I you specify the @code{-library} command-line option then you do not
+have to worry about the @code{MITSCHEME_LIBRARY_PATH} environment
variable.
@item
initialized when Scheme is started. The working directory can be
obtained by calling the procedure @code{pwd} or modified by calling the
procedure @code{cd}; see the reference manual for details. Files may be
-loaded when Scheme first starts; see the @samp{-load} command-line
+loaded when Scheme first starts; see the @code{-load} command-line
option for details.
@deffn {procedure+} load-option symbol [no-error?]
Undocumented. Used by the Edwin command @kbd{M-x step-expression}.
@item subprocess
-Code to run other programs as subprocesses of the Scheme process;
-implemented under Unix and OS/2 only. Undocumented, but used
-extensively by Edwin.
+Code to run other programs as subprocesses of the Scheme process.
+Undocumented, but used extensively by Edwin.
@item wt-tree
The weight-balanced tree data type. Documented in the Reference Manual.
@end deffn
@findex disk-restore
-To restore a saved band, give the @samp{-band} option when starting
+To restore a saved band, give the @code{-band} option when starting
Scheme. Alternatively, evaluate @code{(disk-restore @var{filename})},
which will destroy the current world, replacing it with the saved world.
The argument to @code{disk-restore} may be omitted, in which case it
Note: when restoring a saved band, the Scheme executable must be
configured with a large enough constant space and heap to hold the
band's contents. If you attempt to restore a band using the
-@samp{-band} option, and the band is too large, Scheme will write an
+@code{-band} option, and the band is too large, Scheme will write an
error message that tells you the appropriate command-line options needed
to load that band. If you attempt restore a too-large band using
@code{disk-restore}, Scheme will signal an error, but will not provide
Shows how much space is ``in use'' and how much is ``free'', separately
for the heap and constant space. The amounts are shown in words, and
also in 1024-word blocks; the block figures make it convenient to use
-these numbers to adjust the arguments given to the @samp{-heap} and
-@samp{-constant} command-line options. Following the allocation
+these numbers to adjust the arguments given to the @code{-heap} and
+@code{-constant} command-line options. Following the allocation
figures, information about the most recent 8 garbage collections is
shown, in the same format as a @sc{gc} notification.
@samp{(gc-flip)} from the size of the heap. The size of the heap can be
determined by adding the ``in use'' and ``free'' figures reported by
@code{print-gc-statistics}.
+@end deffn
@example
+@group
(print-gc-statistics)
constant in use: 534121 words = 521 blocks + 617 words
constant free: 128 words = 0 blocks + 128 words
heap free: 205530 words = 200 blocks + 730 words
GC #1: took: 0.13 (81%) CPU time, 0.15 (1%) real time; free: 207210
;No value
+@end group
@end example
-@end deffn
@deffn {procedure+} set-gc-notification! [on?]
Controls whether the user is notified of garbage collections. If
percentage CPU time is consistently high (over 20%), you should consider
running with a larger heap. A rough rule of thumb to halve the @sc{gc}
overhead is to take the amount of free storage, divide by 1000, and add
-this figure to the current value used for the @samp{-heap} command-line
+this figure to the current value used for the @code{-heap} command-line
option. Unfortunately there is no way to adjust the heap size without
restarting Scheme.
@end deffn
@file{foo.com} will be loaded rather than @file{foo.scm}.
If @var{destination} is given, it says where the output files should go.
-If this argument is a directory, they go in that directory, e.g.:
+If this argument is a directory, they go in that directory, e.g.@::
@example
(cf "foo" "../bar/")
@example
@group
-(apply @var{f} @var{x} @var{y} @var{z} @var{w}) @expansion{} ((access apply ()) @var{f} (cons @var{x} (cons @var{y} (cons @var{z} @var{w}))))
-(apply @var{f} @var{x} @var{y}) @expansion{} ((access apply ()) @var{f} (cons @var{x} @var{y}))
+(apply @var{f} @var{x} @var{y} @var{z} @var{w})
+ @expansion{} ((access apply ()) @var{f} (cons @var{x} (cons @var{y} (cons @var{z} @var{w}))))
+(apply @var{f} @var{x} @var{y})
+ @expansion{} ((access apply ()) @var{f} (cons @var{x} @var{y}))
(apply @var{f} @var{x}) @expansion{} (apply @var{f} @var{x})
(apply @var{f}) @expansion{} (apply @var{f})
(apply) @expansion{} (apply)
will cause the system to go to each compiled procedure that calls
@code{newline} and update its execute cache to call the new procedure.
-Obviously you want to avoid updating hundreds of of execute caches in a
+Obviously you want to avoid updating hundreds of execute caches in a
critical loop. Using @code{fluid-let} to temporarily redefine a
procedure has the same inefficiency (but twice!).
assignment must check for the reference traps.
Sometimes you can prove that the variable (a) will always be bound, (b)
-will always be assigned and (c) there will never be any compiled calls
+will never be unassigned and (c) there will never be any compiled calls
to that variable. The compiler can't prove this because it assumes that
other, independently compiled, files might be loaded that invalidate
these assumptions.
reference will yield a reference-trap object rather than signaling an
error. This declaration is relatively safe: the worst that can happen
is that a reference-trap object finds its way into a data structure
-(e.g. a list) or into interpreted code, in which case it will probably
+(e.g.@: a list) or into interpreted code, in which case it will probably
cause some `unrelated' variable to mysteriously become unbound or
unassigned.
@end deffn
variables, @code{none} is the empty set, @code{free} is all of the
variables bound outside the current block, @code{bound} is all of the
variables bound in the current block and @code{assigned} is all of the
-variables for which there exists an assignment (i.e.@ @code{set!}).
+variables for which there exists an assignment (i.e.@: @code{set!}).
@end deffn
@deffn {variable-specification} union set1 set2
Pitfall 3:
A great deal of care has to be taken with the standard math procedures.
For example, when called with a flonum, both @code{sqrt} and @code{asin}
-can return a complex number (e.g -1.5).
+can return a complex number (e.g@: with argument @code{-1.5}).
@c
@c @node Miscellaneous, , Flonum arithmetic, Efficiency Tips
@c @subsection Miscellaneous
@node Debugging, GNU Emacs Interface, Compiling Programs, Top
@chapter Debugging
-@strong{This chapter is out of date and will be revised}.
+@strong{This chapter is out of date and will eventually be revised}.
This chapter is adapted from @cite{Don't Panic: A 6.001 User's Guide to
the Chipmunk System}, by Arthur A. Gleckler.
when either of the libraries @file{scheme} or @file{xscheme} is loaded.
You may give @code{run-scheme} a prefix argument, in which case it will
allow you to edit the command line that is used to invoke Scheme.
-@emph{Do not} remove the @samp{-emacs} option!
+@emph{Do not} remove the @code{-emacs} option!
@emph{Note carefully:} In Emacs 19, the @code{run-scheme} command
exists, but is different from the one described here! In order to get
@item C-x C-e
@kindex C-x C-e
@findex xscheme-send-previous-expression
-Evaluates the expression to the left of point
+Evaluates the expression to the left of point@*
(@code{xscheme-send-previous-expression}). This is also bound to
@kbd{@key{ESC} @key{RET}}.
@section Starting Edwin
To use Edwin, start Scheme with a world image containing Edwin (for
-example by giving the @samp{-edwin} command-line option), then call the
+example by giving the @code{-edwin} command-line option), then call the
procedure @code{edit}:
@deffn {procedure+} edit
@noindent
On the other hand, if @var{arg}s are given, they are used to update
-code@code{create-editor-args}, making the following equivalent:
+@code{create-editor-args}, making the following equivalent:
@example
@group
@item
Cut and paste between Edwin and the system's clipboard (in X11, the
``selection'' mechanism) is now supported. This support is directly
-integrated into the kill and yank commands: killing some text (e.g.
+integrated into the kill and yank commands: killing some text (e.g.@:
@kbd{C-w}, @kbd{C-k}, @kbd{C-M-k}) stores that text into the clipboard;
-yanking text (e.g. @kbd{C-y}, @kbd{M-y}) inserts text from the
+yanking text (e.g.@: @kbd{C-y}, @kbd{M-y}) inserts text from the
clipboard. This support is transparent in that it has no effect on
Edwin except when some other program puts text into the clipboard.
@item
The default window font family and size is now selectable by the
-environment variable @samp{MITSCHEME_FONT}.
+environment variable @code{MITSCHEME_FONT}.
@item
@code{process-time-clock} now returns the process time, rather than the
Watcom C/C++, or @sc{emx/gcc}.
@item
-Unix file systems are supported specially, e.g. Linux @code{ext2} or
+Unix file systems are supported specially, e.g.@: Linux @code{ext2} or
Unix @sc{nfs}. End-of-line translation is not done for files on such
file systems, so that the files are read and written properly.
@code{call-with-current-continuation} is now properly tail-recursive.
@item
-New command-line switch @samp{-no-suspend-file} prevents the generation
-of @file{scheme_suspend} files.
+New command-line switch @code{-no-suspend-file} prevents the generation
+of@* @file{scheme_suspend} files.
@item
Uncompression of compiled-code debugging information is now memoized
@item
Edwin compression/uncompression commands changed to use @code{gzip}
-instead of @code{compress}.
+instead of@* @code{compress}.
@item
Edwin now has text-properties mechanism that permits implementation
describe-syntax
disable-command
disassemble
- display-time @r{(}run-notifier @r{is similar)}
+ display-time @r{(}run-notifier @r{is similar)}
dissociated-press
doctor
edit-abbrevs
expand-region-abbrevs
flush-lines
fortran-mode
- global-set-key (set-key is similar)
+ global-set-key @r{(}set-key @r{is similar)}
grep
hanoi
- indent-c-exp c-indent-expression
+ indent-c-exp c-indent-expression
insert-abbrevs
- insert-kbd-macro write-kbd-macro
+ insert-kbd-macro write-kbd-macro
insert-parentheses
inverse-add-global-abbrev
inverse-add-mode-abbrev
* keep-lines
kill-all-abbrevs
- latex-mode Note: BAL has one
- lisp-complete-symbol (scheme-complete-variable is similar)
- lisp-interaction-mode (inferior-repl-mode is similar)
+ latex-mode Note: BAL has one
+ lisp-complete-symbol @r{(}scheme-complete-variable @r{is similar)}
+ lisp-interaction-mode @r{(}inferior-repl-mode @r{is similar)}
lisp-mode
lisp-send-defun
list-abbrevs
read-abbrev-file
recover-file
run-lisp
- save-buffers-kill-emacs save-buffers-kill-scheme
+ save-buffers-kill-emacs save-buffers-kill-scheme
set-gosmacs-bindings
* shell-command
* shell-command-on-region
spell-region
spell-string
spell-word
- suspend-emacs suspend-scheme
+ suspend-emacs suspend-scheme
tab-to-tab-stop
tags-apropos
tex-mode
c-tab-always-indent
comment-start-skip
* compile-command
- completion-ignore-case @r{(not documented)}
+ completion-ignore-case @r{(not documented)}
ctl-arrow
- debug-on-error debug-on-editor-error
- debug-on-internal-error
- debug-on-evaluation-error
- @r{are similar, but more specific}
+ debug-on-error debug-on-editor-error
+ debug-on-internal-error
+ debug-on-evaluation-error
+ @r{are similar, but more specific}
debug-on-quit
default-directory
default-major-mode
echo-keystrokes
- initial-major-mode @r{Scheme variable} initial-buffer-mode
+ initial-major-mode @r{Scheme variable} initial-buffer-mode
insert-default-directory
inverse-video
kill-ring-max
* lpr-switches
major-mode
mark-ring
- mark-ring-max mark-ring-maximum
+ mark-ring-max mark-ring-maximum
meta-flag
no-redraw-on-recenter
save-abbrevs
selective-display-ellipses
* shell-file-name
tab-stop-list
- tags-file-name @r{(}tags-table-pathname@r{ is similar)}
+ tags-file-name @r{(}tags-table-pathname@r{ is similar)}
track-eol
visible-bell
@end example