2 Data types
2.1 Simple data types
2.1.1 Booleans
2.1.2 Numbers
2.1.3 Characters
2.1.4 Symbols
2.2 Compound data types
2.2.1 Strings
2.2.2 Vectors
2.2.3 Dotted pairs and lists
2.2.4 Conversions between data types
2.3 Other data types
2.4 S-expressions
3 Forms
3.1 Procedures
3.1.1 Procedure parameters
3.1.2 Variable number of arguments
3.1.3 apply
3.2 Sequencing
4 Conditionals
4.1 when
and unless
4.2 cond
4.3 case
4.4 and
and or
5 Lexical variables
5.1 let
and let*
5.2 fluid-let
6 Recursion
6.1 letrec
6.2 Named let
6.3 Iteration
6.4 Mapping a procedure across a list
7 Macros
7.1 Specifying the expansion as a template
7.2 Avoiding variable capture inside macros
7.3 fluid-let
7.4 Dialect differences
8 Structures
8.1 Default initializations
8.2 defstruct
definition
10 I/O
10.1 Reading
10.2 Writing
10.3 File ports
10.3.1 Automatic opening and closing of file ports
10.4 String ports
10.5 Loading files
11 System interface
11.1 Checking for and deleting files
11.2 Calling operating-system commands
11.3 Environment variables
12 Objects and classes
12.1 A simple object system
12.2 Classes are instances too
12.3 Multiple inheritance
13 Jumps
13.1 call-with-current-continuation
13.2 Escaping continuations
13.3 Tree matching
13.4 Coroutines
13.4.1 Tree-matching with coroutines
14 Nondeterminism
14.1 Description of amb
14.2 Implementing amb
in Scheme
14.3 Using amb
in Scheme
14.4 Logic puzzles
14.4.1 The Kalotan puzzle
14.4.2 Map coloring
15 Engines
15.1 The clock
15.2 Flat engines
15.3 Nestable engines
16 Shell scripts
16.1 Hello, World!, again
16.2 Scripts with arguments
16.3 Example
17 CGI scripts
17.1 Example: Displaying environment variables
17.2 Example: Displaying selected environment variable
17.3 CGI script utilities
17.4 A calculator via CGI
A Scheme dialects
A.1 Guile
A.2 MzScheme
A.3 SCM
A.4 STk