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