CONTENTS IN DETAILnostarch.com/download/samples/Realm_dtoc.pdfContents in Detail xi 5.4 Guessing...

7

Transcript of CONTENTS IN DETAILnostarch.com/download/samples/Realm_dtoc.pdfContents in Detail xi 5.4 Guessing...

Page 1: CONTENTS IN DETAILnostarch.com/download/samples/Realm_dtoc.pdfContents in Detail xi 5.4 Guessing Gooey .....85 The Data .....85
Page 2: CONTENTS IN DETAILnostarch.com/download/samples/Realm_dtoc.pdfContents in Detail xi 5.4 Guessing Gooey .....85 The Data .....85

CONTENTS IN DETAIL

PREFACE HELLO WORLD xvWhy Would I Want to Learn About Racket? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xvWho Should Read This Book? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviWhat Teaching Approach Is Used?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviCan I Skip Chapters? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviAnything Else I Should Know?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi

INTRODUCTION OPEN PAREN 1(.1 What Makes Lisp So Cool and Unusual? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2(.2 Where Did Lisp Come From? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2(.3 What Does Lisp Look Like? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5(.4 Where Does Racket Come From? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7(.5 What Is This Book About? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Halt—Chapter Checkpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1 GETTING STARTED 191.1 Readying Racket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.2 Interacting with Racket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Raise—Chapter Checkpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2 A FIRST RACKET PROGRAM 272.1 The Guess My Number Game. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.2 Defining Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.3 Basic Racket Etiquette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.4 Defining Functions in Racket. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

A Function for Guessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Functions for Closing In . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32The Main Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Resume—Chapter Checkpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3 BASICS OF RACKET 353.1 Syntax and Semantics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.2 The Building Blocks of Racket Syntax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.3 The Building Blocks of Racket Semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

Booleans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

Page 3: CONTENTS IN DETAILnostarch.com/download/samples/Realm_dtoc.pdfContents in Detail xi 5.4 Guessing Gooey .....85 The Data .....85

x Contents in Detail

Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

3.4 Lists in Racket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41CONS Cells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42Functions for CONS Cells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42Lists and List Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43The CONS Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43The LIST Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45The FIRST and REST Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45Nested Lists. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

3.5 Structures in Racket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47Structure Basics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47Nesting Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49Structure Transparency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

Interrupt—Chapter Checkpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4 CONDITIONS AND DECISIONS 514.1 How to Ask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.2 The Conditionals: IF and Beyond . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

One Thing at a Time with IF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56The Special Form that Does It All: COND . . . . . . . . . . . . . . . . . . . . . . . . . 58A First Taste of Recursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

4.3 Cool Tricks with Conditionals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61Using the Stealth Conditionals AND and OR . . . . . . . . . . . . . . . . . . . . . . 61Using Functions that Return More than Just the Truth . . . . . . . . . . . . . . . 63

4.4 Equality Predicates, Once More . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644.5 Comparing and Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

Writing a Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68What Is Not a Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69Testing in the Real World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69More Testing Facilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

Call-with-current-continuation—Chapter Checkpoint . . . . . . . . . . . . . . . . . . 70

4! DEFINE DEFINE 'DEFINE 714!.1 Module-Level Definitions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

Variable Definitions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71Function Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

4!.2 Local Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73Abort—Chapter Checkpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

5 BIG-BANG 795.1 Graphical User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795.2 Landing a UFO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805.3 Using big-bang: Syntax and Semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

Page 4: CONTENTS IN DETAILnostarch.com/download/samples/Realm_dtoc.pdfContents in Detail xi 5.4 Guessing Gooey .....85 The Data .....85

Contents in Detail xi

5.4 Guessing Gooey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85The Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85The Main Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86Key-Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87Rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88Time to Stop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

Exit—Chapter Checkpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89Chapter Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6 RECURSION IS EASY 956.1 Robot Snake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 956.2 A Data Representation for the Snake Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . 966.3 The Main Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976.4 Clock Ticks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

Eating and Growing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99Slithering. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100Rotting Goo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

6.5 Key-Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1036.6 Rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1056.7 End Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1076.8 Auxiliary Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108Return—Chapter Checkpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109Chapter Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

7 LAND OF LAMBDA 1117.1 Functions as Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1117.2 Lambda. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1137.3 Higher-Order Fun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1147.4 Two More Higher-Order Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1187.5 Derive This! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1217.6 apply. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122Break—Chapter Checkpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

8 MUTANT STRUCTS 1278.1 Chad’s First Battle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1278.2 Orc Battle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1288.3 Setting Up the World, a First Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1288.4 Action: How Structs Really Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1318.5 More Actions, Setting Up the World for Good . . . . . . . . . . . . . . . . . . . . . . . . . 1358.6 Ready, Set, big-bang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1368.7 Initializing the Orc World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1408.8 Rendering the Orc World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1428.9 The End of the World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1468.10 Actions, A Final Look . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

Page 5: CONTENTS IN DETAILnostarch.com/download/samples/Realm_dtoc.pdfContents in Detail xi 5.4 Guessing Gooey .....85 The Data .....85

xii Contents in Detail

Throw—Chapter Checkpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151Chapter Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

9 THE VALUES OF LOOPS 1539.1 FOR Loops. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1539.2 Multiple Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1559.3 Back to FOR/FOLD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1569.4 More on Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157Waitpid—Chapter Checkpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

10 DICE OF DOOM 16510.1 The Game Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16510.2 Dice of Doom, The Game. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16610.3 Designing Dice of Doom: Take One . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

Filling in the Blanks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167Simplifying the Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167End of Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167Controlling the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

10.4 How Game Trees Work. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16810.5 Game States and Game Trees for Dice of Doom . . . . . . . . . . . . . . . . . . . . . . . 17110.6 Roll the Dice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17410.7 Rendering the Dice World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17610.8 Input Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17910.9 Creating a Game Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

The Game Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182Neighbors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184Attacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

10.10 The End Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189Kill—Chapter Checkpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190Chapter Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

11 POWER TO THE LAZY 19311.1 Doomsday . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19311.2 Lazy Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19411.3 Memoized Computations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19611.4 Racket Can Be Lazy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198Delay—Chapter Checkpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

12 ARTIFICIAL INTELLIGENCE 20312.1 An Intelligent Life-form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20312.2 Lazy Games . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20412.3 Adding Artificial Intelligence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

Page 6: CONTENTS IN DETAILnostarch.com/download/samples/Realm_dtoc.pdfContents in Detail xi 5.4 Guessing Gooey .....85 The Data .....85

Contents in Detail xiii

Stop-when—Chapter Checkpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208Chapter Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

13 THE WORLD IS NOT ENOUGH 21313.1 What Is a Distributed Game? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21313.2 The Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

Messages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215Previously Fabricated Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216Bundles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216Mail. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216iworld Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216

13.3 The Network Postal Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21713.4 Organizing Your Universe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21813.5 Distributed Guess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

The State of the Client and the State of the Server . . . . . . . . . . . . . . . . . 221The Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222The Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224Running the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

Error—Chapter Checkpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225Chapter Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

14 HUNGRY HENRY 23114.1 King Henry the Hungry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23114.2 Hungry Henry, the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23214.3 Two United States. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23214.4 Henry’s Universe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

Message Data and Structures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233Complex Numbers Are Good Positions . . . . . . . . . . . . . . . . . . . . . . . . . . 236A Day in the Life of a Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236A Day in the Life of a Client. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236

14.5 State of the Union . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236State of Henry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237State of the House . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

14.6 Main, Take Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238The Appetizer State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239The Entree State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242

14.7 Main, Take Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245The Join State and Network Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247The Join State and Tick Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249The Play State and Network Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251The Play State and Tick Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

14.8 See Henry Run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257On-disconnect—Chapter Checkpoint. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258Chapter Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258

Page 7: CONTENTS IN DETAILnostarch.com/download/samples/Realm_dtoc.pdfContents in Detail xi 5.4 Guessing Gooey .....85 The Data .....85

xiv Contents in Detail

GOOD-BYE CLOSE PAREN 265).1 Run Racket Run. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265).2 Racket Is a Programming Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266).3 Racket Is a Metaprogramming Language. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270).4 Racket Is a Programming-Language Programming Language . . . . . . . . . . . . . . . 274So Long . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281