Download MIT/GNU Scheme User's Manual

Transcript
i
Table of Contents
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1
Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1
1.2
1.3
2
Unix Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Windows Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Portable C Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Running Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1
2.2
2.3
2.4
2.5
2.6
Basics of Starting Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Customizing Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Memory Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Command-Line Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Custom Command-line Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Environment Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.6.1 Environment Variables for the Microcode . . . . . . . . . . . . . . . . . 12
2.6.2 Environment Variables for the Runtime System . . . . . . . . . . . 13
2.6.3 Environment Variables for Edwin . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.6.4 Environment Variables for Microsoft Windows . . . . . . . . . . . . 14
2.7 Starting Scheme from Microsoft Windows . . . . . . . . . . . . . . . . . . . . . 15
2.8 Leaving Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3
Using Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.1
The Read-Eval-Print Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.1 The Prompt and Level Number. . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.2 Interrupting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.3 Restarting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.4 The Current REPL Environment . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Loading Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 World Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4 Garbage Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
17
17
18
18
19
20
22
22
Compiling Programs . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.1
4.2
Compilation Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.1 Standard Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.2 In-line Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.3 Operator Replacement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.4 Operator Reduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3 Efficiency Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.1 Coding style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.2 Global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.3 Type and range checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
26
27
27
28
30
32
32
34
36