@contents
@ifnottex
-@node Top, Introduction, (dir), (dir)
+@node Top
@top MIT/GNU Scheme
@insertcopying
* Concept Index::
@end menu
-@node Introduction, Installation, Top, Top
+@node Introduction
@unnumbered Introduction
This document describes how to install and use MIT/GNU Scheme, the
(@pxref{Basics of Starting Scheme}), so we know what version of the
system you are using.
-@node Installation, Running Scheme, Introduction, Top
+@node Installation
@chapter Installation
This chapter describes how to install MIT/GNU Scheme. The release is
* Portable C Installation::
@end menu
-@node Unix Installation, Windows Installation, Installation, Installation
+@node Unix Installation
@section Unix Installation
We will use as an example the installation for GNU/Linux. The
make install
@end example
+Depending on configuration options and file-system permissions, you
+may need super-user privileges to do the installation steps.
+
+@item
+Build the documentation:
+
+@example
+cd ../doc
+./configure
+make
+@end example
+
+@item
+Install the documentation:
+
+@example
+make install-info install-html install-pdf
+@end example
+
Depending on configuration options and file-system permissions, you
may need super-user privileges to do the installation step.
@end enumerate
rm -rf mit-scheme-@var{VERSION}
@end example
-@node Windows Installation, Portable C Installation, Unix Installation, Installation
+@node Windows Installation
@section Windows Installation
This section describes how to install MIT/GNU Scheme on Windows 2000,
To uninstall the software, open up the @samp{Control Panel}, run
@samp{Add/Remove Programs}, and double-click on @samp{MIT/GNU Scheme}.
-@node Portable C Installation, , Windows Installation, Installation
+@node Portable C Installation
@section Portable C Installation
This section describes how to generate binaries from the portable C
may need super-user privileges to do the installation step.
@end enumerate
-@node Running Scheme, Using Scheme, Installation, Top
+@node Running Scheme
@chapter Running Scheme
This chapter describes how to run MIT/GNU Scheme. It also
* Leaving Scheme::
@end menu
-@node Basics of Starting Scheme, Customizing Scheme, Running Scheme, Running Scheme
+@node Basics of Starting Scheme
@section Basics of Starting Scheme
Under unix, MIT/GNU Scheme is invoked by typing
@samp{Edwin} is the Emacs-like text editor. There are other
subsystems you can load that will add themselves to this list.
-@node Customizing Scheme, Memory Usage, Basics of Starting Scheme, Running Scheme
+@node Customizing Scheme
@section Customizing Scheme
You can customize your setup by using a variety of tools:
to create icons that invoke Scheme with different parameters.
@end itemize
-@node Memory Usage, Command-Line Options, Customizing Scheme, Running Scheme
+@node Memory Usage
@section Memory Usage
Some of the parameters that can be customized determine how much memory
The Scheme expression @samp{(print-gc-statistics)} shows how much heap
and constant space is available (@pxref{Garbage Collection}).
-@node Command-Line Options, Custom Command-line Options, Memory Usage, Running Scheme
+@node Command-Line Options
@section Command-Line Options
Scheme accepts the command-line options detailed in the following
This option causes Edwin to start immediately when Scheme is started.
@end table
-@node Custom Command-line Options, Environment Variables, Command-Line Options, Running Scheme
+@node Custom Command-line Options
@section Custom Command-line Options
MIT/GNU Scheme provides a mechanism for you to define your own
delayed actions.
@end deffn
-@node Environment Variables, Starting Scheme from Microsoft Windows, Custom Command-line Options, Running Scheme
+@node Environment Variables
@section Environment Variables
Scheme refers to many environment variables. This section lists these
* Windows Environment Variables::
@end menu
-@node Microcode Environment Variables, Runtime Environment Variables, Environment Variables, Environment Variables
+@node Microcode Environment Variables
@subsection Environment Variables for the Microcode
These environment variables are referred to by the microcode (the
@option{--stack}. The default value is @samp{128}.
@end table
-@node Runtime Environment Variables, Edwin Environment Variables, Microcode Environment Variables, Environment Variables
+@node Runtime Environment Variables
@subsection Environment Variables for the Runtime System
These environment variables are referred to by the runtime system.
the library path.
@end table
-@node Edwin Environment Variables, Windows Environment Variables, Runtime Environment Variables, Environment Variables
+@node Edwin Environment Variables
@subsection Environment Variables for Edwin
These environment variables are referred to by Edwin.
on the screen, for systems that don't support @samp{TIOCGWINSZ}.
@end table
-@node Windows Environment Variables, , Edwin Environment Variables, Environment Variables
+@node Windows Environment Variables
@subsection Environment Variables for Microsoft Windows
These environment variables are specific to the Microsoft Windows
by searching for a subdirectory with the user's login name.
@end table
-@node Starting Scheme from Microsoft Windows, Leaving Scheme, Environment Variables, Running Scheme
+@node Starting Scheme from Microsoft Windows
@section Starting Scheme from Microsoft Windows
The Microsoft Windows version of MIT/GNU Scheme runs as a
@option{--edit} at the end of the command line.
@end itemize
-@node Leaving Scheme, , Starting Scheme from Microsoft Windows, Running Scheme
+@node Leaving Scheme
@section Leaving Scheme
There are several ways that you can leave Scheme: there are two Scheme
window, it terminates Scheme as well.
@end itemize
-@node Using Scheme, Compiling Programs, Running Scheme, Top
+@node Using Scheme
@chapter Using Scheme
This chapter describes how to use Scheme to evaluate expressions and
* Garbage Collection::
@end menu
-@node REPL, Loading Files, Using Scheme, Using Scheme
+@node REPL
@section The Read-Eval-Print Loop
@cindex REPL
* The Current REPL Environment::
@end menu
-@node The Prompt and Level Number, Interrupting, REPL, REPL
+@node The Prompt and Level Number
@subsection The Prompt and Level Number
@cindex prompt, REPL
@acronym{REPL}. If you abort out of it, the context of the error will
be destroyed, and you may not be able to find out what happened.
-@node Interrupting, Restarting, The Prompt and Level Number, REPL
+@node Interrupting
@subsection Interrupting
@kindex C-g
documented here.
@end table
-@node Restarting, The Current REPL Environment, Interrupting, REPL
+@node Restarting
@subsection Restarting
Another way to exit a @acronym{REPL} is to use the @code{restart}
@end example
@end deffn
-@node The Current REPL Environment, , Restarting, REPL
+@node The Current REPL Environment
@subsection The Current REPL Environment
@cindex current REPL environment
returned.
@end deffn
-@node Loading Files, World Images, REPL, Using Scheme
+@node Loading Files
@section Loading Files
To load files of Scheme code, use the procedure @code{load}:
executed in order from left to right.
@end deffn
-@node World Images, Garbage Collection, Loading Files, Using Scheme
+@node World Images
@section World Images
@cindex world image
The argument to @code{disk-restore} may be omitted, in which case it
defaults to the filename from which the current world was last restored.
-@node Garbage Collection, , World Images, Using Scheme
+@node Garbage Collection
@section Garbage Collection
This section describes procedures that control garbage collection.
notification is turned on, turns it off; otherwise turns it on.
@end deffn
-@node Compiling Programs, Debugging, Using Scheme, Top
+@node Compiling Programs
@chapter Compiling Programs
Note: the procedures described in this section are only available when
* Efficiency Tips::
@end menu
-@node Compilation Procedures, Declarations, Compiling Programs, Compiling Programs
+@node Compilation Procedures
@section Compilation Procedures
@deffn procedure cf filename [destination]
has its normal name but is put in that directory instead.
@end deffn
-@node Declarations, Efficiency Tips, Compilation Procedures, Compiling Programs
+@node Declarations
@section Declarations
@cindex declarations
* Reduction of Operators::
@end menu
-@node Standard Names, In-line Coding, Declarations, Declarations
+@node Standard Names
@subsection Standard Names
Normally, all files have a line
@end group
@end example
-@node In-line Coding, Replacement of Operators, Standard Names, Declarations
+@node In-line Coding
@subsection In-line Coding
Another useful facility is the ability to in-line code procedure
@end group
@end example
-@node Replacement of Operators, Reduction of Operators, In-line Coding, Declarations
+@node Replacement of Operators
@subsection Operator Replacement
The @code{replace-operator} declaration is provided to inform the
@end itemize
@end deffn
-@node Reduction of Operators, , Replacement of Operators, Declarations
+@node Reduction of Operators
@subsection Operator Reduction
@findex reduce-operator
@end itemize
@end deffn
-@node Efficiency Tips, , Declarations, Compiling Programs
+@node Efficiency Tips
@section Efficiency Tips
How you write your programs can have a large impact on how efficiently
* Flonum arithmetic::
@end menu
-@node Coding style, Global variables, Efficiency Tips, Efficiency Tips
+@node Coding style
@subsection Coding style
Scheme is a rich language, in which there are usually several ways to
portability and avoids the implementation inefficiencies described in
this section.
-@node Global variables, Type and range checking, Coding style, Efficiency Tips
+@node Global variables
@subsection Global variables
@cindex variable caches
@c
@c In all versions, top level declarations affect the whole source file.
-@node Type and range checking, Fixnum arithmetic, Global variables, Efficiency Tips
+@node Type and range checking
@subsection Type and range checking
@cindex type checking
valid.
@end deffn
-@node Fixnum arithmetic, Flonum arithmetic, Type and range checking, Efficiency Tips
+@node Fixnum arithmetic
@subsection Fixnum arithmetic
The usual arithmetic operations like @code{+} and @code{<} are called
A fruitful area for inserting fixnum operations is in the index
operations in tight loops.
-@node Flonum arithmetic, , Fixnum arithmetic, Efficiency Tips
+@node Flonum arithmetic
@subsection Flonum arithmetic
@c
@c !INCOMPLETE
For example, when called with a flonum, both @code{sqrt} and @code{asin}
can return a complex number (e.g@: with argument @code{-1.5}).
-@node Debugging, Profiling, Compiling Programs, Top
+@node Debugging
@chapter Debugging
Parts of this chapter are adapted from @cite{Don't Panic: A 6.001 User's
* Advising Procedures::
@end menu
-@node Subproblems and Reductions, Command-Line Debugger, Debugging, Debugging
+@node Subproblems and Reductions
@section Subproblems and Reductions
@cindex subproblem
for subproblem levels and reduction numbers is to experiment with the
debugging tools, especially @code{debug}.
-@node Command-Line Debugger, Debugging Aids, Subproblems and Reductions, Debugging
+@node Command-Line Debugger
@section The Command-Line Debugger
@cindex debugger
command prints a brief summary of the debugger's commands.
@end table
-@node Debugging Aids, Advising Procedures, Command-Line Debugger, Debugging
+@node Debugging Aids
@section Debugging Aids
This section describes additional commands that are useful for
@end example
@end deffn
-@node Advising Procedures, , Debugging Aids, Debugging
+@node Advising Procedures
@section Advising Procedures
Giving advice to procedures is a powerful debugging technique.
@var{procedure} is not given, the default is all advised procedures.
@end deffn
-@node Profiling, GNU Emacs Interface, Debugging, Top
+@node Profiling
@chapter Profiling
MIT/GNU Scheme provides a simple-minded statistical profiler called
the system.
@end defvr
-@node GNU Emacs Interface, Edwin, Profiling, Top
+@node GNU Emacs Interface
@chapter GNU Emacs Interface
There is an interface library, called @file{xscheme}, distributed with
Like evaluating @samp{(continue)}. (@code{xscheme-send-proceed})
@end table
-@node Edwin, Release Notes, GNU Emacs Interface, Top
+@node Edwin
@chapter Edwin
This chapter describes how to start Edwin, the MIT/GNU Scheme text
* Last Resorts::
@end menu
-@node Starting Edwin, Leaving Edwin, Edwin, Edwin
+@node Starting Edwin
@section Starting Edwin
To use Edwin, start Scheme with the following command-line options:
@end table
@end defvr
-@node Leaving Edwin, Edwin Scheme Mode, Starting Edwin, Edwin
+@node Leaving Edwin
@section Leaving Edwin
Once Edwin has been entered, it can be exited in the following ways:
Emacs.
@end table
-@node Edwin Scheme Mode, Edwin Scheme Evaluation, Leaving Edwin, Edwin
+@node Edwin Scheme Mode
@section Scheme Mode
As you might expect, Edwin has special support for editing and
point, so in this example, the buffer would contain @samp{(quotient n d}
after running @kbd{C-u M-A}.
-@node Edwin Scheme Evaluation, Edwin REPL Mode, Edwin Scheme Mode, Edwin
+@node Edwin Scheme Evaluation
@section Evaluation
Scheme mode also provides commands for evaluating Scheme expressions.
buffer when the evaluation finishes; and you abort the evaluation using
@kbd{C-g}.
-@node Edwin REPL Mode, Edwin Debugger, Edwin Scheme Evaluation, Edwin
+@node Edwin REPL Mode
@section REPL Mode
Edwin provides a special mechanism for interacting with Scheme
Your @acronym{REPL} buffer remains in the error state, allowing you to
examine it further if you wish.
-@node Edwin Debugger, Last Resorts, Edwin REPL Mode, Edwin
+@node Edwin Debugger
@section The Edwin Debugger
The Edwin debugger is similar to the command-line debugger, except that
using @kbd{M-x rename-buffer}: once it has been renamed, it will not be
automatically deleted.
-@node Last Resorts, , Edwin Debugger, Edwin
+@node Last Resorts
@section Last Resorts
When Scheme exits abnormally it tries to save any unsaved Edwin buffers.
state that prevents Edwin from running.
@end deffn
-@node Release Notes, GNU Free Documentation License, Edwin, Top
+@node Release Notes
@appendix Release Notes
The release notes are online at
@uref{http://www.gnu.org/software/mit-scheme/release.html}.
-@node GNU Free Documentation License, Environment-variable Index, Release Notes, Top
+@node GNU Free Documentation License
@appendix GNU Free Documentation License
@cindex FDL, GNU Free Documentation License
free software license, such as the GNU General Public License,
to permit their use in free software.
-@node Environment-variable Index, Option Index, GNU Free Documentation License, Top
+@node Environment-variable Index
@appendix Environment-variable Index
@printindex nv
-@node Option Index, Variable Index, Environment-variable Index, Top
+@node Option Index
@appendix Option Index
@printindex op
-@node Variable Index, Concept Index, Option Index, Top
+@node Variable Index
@appendix Variable Index
@printindex vr
-@node Concept Index, , Variable Index, Top
+@node Concept Index
@appendix Concept Index
@printindex cp