diff --git a/time-clocks-and-the-ordering-of-event-in-a-distributed-system.pdf b/concurrency/time-clocks-and-the-ordering-of-event-in-a-distributed-system.pdf similarity index 100% rename from time-clocks-and-the-ordering-of-event-in-a-distributed-system.pdf rename to concurrency/time-clocks-and-the-ordering-of-event-in-a-distributed-system.pdf diff --git a/comp_sci_fundamentals_and_history/fundamental-concepts-in-programming-languages.pdf b/plt/fundamental-concepts-in-programming-languages.pdf similarity index 100% rename from comp_sci_fundamentals_and_history/fundamental-concepts-in-programming-languages.pdf rename to plt/fundamental-concepts-in-programming-languages.pdf diff --git a/comp_sci_fundamentals_and_history/on-understanding-types-data-abstraction-polymorphism.pdf b/plt/on-understanding-types-data-abstraction-polymorphism.pdf similarity index 100% rename from comp_sci_fundamentals_and_history/on-understanding-types-data-abstraction-polymorphism.pdf rename to plt/on-understanding-types-data-abstraction-polymorphism.pdf diff --git a/predicate-dispatching.pdf b/plt/predicate-dispatching.pdf similarity index 100% rename from predicate-dispatching.pdf rename to plt/predicate-dispatching.pdf diff --git a/plt/programming-languages-application-and-interpretation.pdf b/plt/programming-languages-application-and-interpretation.pdf new file mode 100644 index 0000000..0378877 --- /dev/null +++ b/plt/programming-languages-application-and-interpretation.pdf @@ -0,0 +1,15806 @@ +%PDF-1.5 +% +1 0 obj +<< /S /GoTo /D (section.1) >> +endobj +4 0 obj +(1 Introduction) +endobj +5 0 obj +<< /S /GoTo /D (subsection.1.1) >> +endobj +8 0 obj +(1.1 Our Philosophy) +endobj +9 0 obj +<< /S /GoTo /D (subsection.1.2) >> +endobj +12 0 obj +(1.2 The Structure of This Book) +endobj +13 0 obj +<< /S /GoTo /D (subsection.1.3) >> +endobj +16 0 obj +(1.3 The Language of This Book) +endobj +17 0 obj +<< /S /GoTo /D (section.2) >> +endobj +20 0 obj +(2 Everything \(We Will Say\) About Parsing) +endobj +21 0 obj +<< /S /GoTo /D (subsection.2.1) >> +endobj +24 0 obj +(2.1 A Lightweight, Built-In First Half of a Parser) +endobj +25 0 obj +<< /S /GoTo /D (subsection.2.2) >> +endobj +28 0 obj +(2.2 A Convenient Shortcut) +endobj +29 0 obj +<< /S /GoTo /D (subsection.2.3) >> +endobj +32 0 obj +(2.3 Types for Parsing) +endobj +33 0 obj +<< /S /GoTo /D (subsection.2.4) >> +endobj +36 0 obj +(2.4 Completing the Parser) +endobj +37 0 obj +<< /S /GoTo /D (subsection.2.5) >> +endobj +40 0 obj +(2.5 Coda) +endobj +41 0 obj +<< /S /GoTo /D (section.3) >> +endobj +44 0 obj +(3 A First Look at Interpretation) +endobj +45 0 obj +<< /S /GoTo /D (subsection.3.1) >> +endobj +48 0 obj +(3.1 Representing Arithmetic) +endobj +49 0 obj +<< /S /GoTo /D (subsection.3.2) >> +endobj +52 0 obj +(3.2 Writing an Interpreter) +endobj +53 0 obj +<< /S /GoTo /D (subsection.3.3) >> +endobj +56 0 obj +(3.3 Did You Notice?) +endobj +57 0 obj +<< /S /GoTo /D (subsection.3.4) >> +endobj +60 0 obj +(3.4 Growing the Language) +endobj +61 0 obj +<< /S /GoTo /D (section.4) >> +endobj +64 0 obj +(4 A First Taste of Desugaring) +endobj +65 0 obj +<< /S /GoTo /D (subsection.4.1) >> +endobj +68 0 obj +(4.1 Extension: Binary Subtraction) +endobj +69 0 obj +<< /S /GoTo /D (subsection.4.2) >> +endobj +72 0 obj +(4.2 Extension: Unary Negation) +endobj +73 0 obj +<< /S /GoTo /D (section.5) >> +endobj +76 0 obj +(5 Adding Functions to the Language) +endobj +77 0 obj +<< /S /GoTo /D (subsection.5.1) >> +endobj +80 0 obj +(5.1 Defining Data Representations) +endobj +81 0 obj +<< /S /GoTo /D (subsection.5.2) >> +endobj +84 0 obj +(5.2 Growing the Interpreter) +endobj +85 0 obj +<< /S /GoTo /D (subsection.5.3) >> +endobj +88 0 obj +(5.3 Substitution) +endobj +89 0 obj +<< /S /GoTo /D (subsection.5.4) >> +endobj +92 0 obj +(5.4 The Interpreter, Resumed) +endobj +93 0 obj +<< /S /GoTo /D (subsection.5.5) >> +endobj +96 0 obj +(5.5 Oh Wait, There's More!) +endobj +97 0 obj +<< /S /GoTo /D (section.6) >> +endobj +100 0 obj +(6 From Substitution to Environments) +endobj +101 0 obj +<< /S /GoTo /D (subsection.6.1) >> +endobj +104 0 obj +(6.1 Introducing the Environment) +endobj +105 0 obj +<< /S /GoTo /D (subsection.6.2) >> +endobj +108 0 obj +(6.2 Interpreting with Environments) +endobj +109 0 obj +<< /S /GoTo /D (subsection.6.3) >> +endobj +112 0 obj +(6.3 Deferring Correctly) +endobj +113 0 obj +<< /S /GoTo /D (subsection.6.4) >> +endobj +116 0 obj +(6.4 Scope) +endobj +117 0 obj +<< /S /GoTo /D (subsubsection.6.4.1) >> +endobj +120 0 obj +(6.4.1 How Bad Is It?) +endobj +121 0 obj +<< /S /GoTo /D (subsubsection.6.4.2) >> +endobj +124 0 obj +(6.4.2 The Top-Level Scope) +endobj +125 0 obj +<< /S /GoTo /D (subsection.6.5) >> +endobj +128 0 obj +(6.5 Exposing the Environment) +endobj +129 0 obj +<< /S /GoTo /D (section.7) >> +endobj +132 0 obj +(7 Functions Anywhere) +endobj +133 0 obj +<< /S /GoTo /D (subsection.7.1) >> +endobj +136 0 obj +(7.1 Functions as Expressions and Values) +endobj +137 0 obj +<< /S /GoTo /D (subsection.7.2) >> +endobj +140 0 obj +(7.2 Nested What?) +endobj +141 0 obj +<< /S /GoTo /D (subsection.7.3) >> +endobj +144 0 obj +(7.3 Implementing Closures) +endobj +145 0 obj +<< /S /GoTo /D (subsection.7.4) >> +endobj +148 0 obj +(7.4 Substitution, Again) +endobj +149 0 obj +<< /S /GoTo /D (subsection.7.5) >> +endobj +152 0 obj +(7.5 Sugaring Over Anonymity) +endobj +153 0 obj +<< /S /GoTo /D (section.8) >> +endobj +156 0 obj +(8 Mutation: Structures and Variables) +endobj +157 0 obj +<< /S /GoTo /D (subsection.8.1) >> +endobj +160 0 obj +(8.1 Mutable Structures) +endobj +161 0 obj +<< /S /GoTo /D (subsubsection.8.1.1) >> +endobj +164 0 obj +(8.1.1 A Simple Model of Mutable Structures) +endobj +165 0 obj +<< /S /GoTo /D (subsubsection.8.1.2) >> +endobj +168 0 obj +(8.1.2 Scaffolding) +endobj +169 0 obj +<< /S /GoTo /D (subsubsection.8.1.3) >> +endobj +172 0 obj +(8.1.3 Interaction with Closures) +endobj +173 0 obj +<< /S /GoTo /D (subsubsection.8.1.4) >> +endobj +176 0 obj +(8.1.4 Understanding the Interpretation of Boxes) +endobj +177 0 obj +<< /S /GoTo /D (subsubsection.8.1.5) >> +endobj +180 0 obj +(8.1.5 Can the Environment Help?) +endobj +181 0 obj +<< /S /GoTo /D (subsubsection.8.1.6) >> +endobj +184 0 obj +(8.1.6 Introducing the Store) +endobj +185 0 obj +<< /S /GoTo /D (subsubsection.8.1.7) >> +endobj +188 0 obj +(8.1.7 Interpreting Boxes) +endobj +189 0 obj +<< /S /GoTo /D (subsubsection.8.1.8) >> +endobj +192 0 obj +(8.1.8 The Bigger Picture) +endobj +193 0 obj +<< /S /GoTo /D (subsection.8.2) >> +endobj +196 0 obj +(8.2 Variables) +endobj +197 0 obj +<< /S /GoTo /D (subsubsection.8.2.1) >> +endobj +200 0 obj +(8.2.1 Terminology) +endobj +201 0 obj +<< /S /GoTo /D (subsubsection.8.2.2) >> +endobj +204 0 obj +(8.2.2 Syntax) +endobj +205 0 obj +<< /S /GoTo /D (subsubsection.8.2.3) >> +endobj +208 0 obj +(8.2.3 Interpreting Variables) +endobj +209 0 obj +<< /S /GoTo /D (subsection.8.3) >> +endobj +212 0 obj +(8.3 The Design of Stateful Language Operations) +endobj +213 0 obj +<< /S /GoTo /D (subsection.8.4) >> +endobj +216 0 obj +(8.4 Parameter Passing) +endobj +217 0 obj +<< /S /GoTo /D (section.9) >> +endobj +220 0 obj +(9 Recursion and Cycles: Procedures and Data) +endobj +221 0 obj +<< /S /GoTo /D (subsection.9.1) >> +endobj +224 0 obj +(9.1 Recursive and Cyclic Data) +endobj +225 0 obj +<< /S /GoTo /D (subsection.9.2) >> +endobj +228 0 obj +(9.2 Recursive Functions) +endobj +229 0 obj +<< /S /GoTo /D (subsection.9.3) >> +endobj +232 0 obj +(9.3 Premature Observation) +endobj +233 0 obj +<< /S /GoTo /D (subsection.9.4) >> +endobj +236 0 obj +(9.4 Without Explicit State) +endobj +237 0 obj +<< /S /GoTo /D (section.10) >> +endobj +240 0 obj +(10 Objects) +endobj +241 0 obj +<< /S /GoTo /D (subsection.10.1) >> +endobj +244 0 obj +(10.1 Objects Without Inheritance) +endobj +245 0 obj +<< /S /GoTo /D (subsubsection.10.1.1) >> +endobj +248 0 obj +(10.1.1 Objects in the Core) +endobj +249 0 obj +<< /S /GoTo /D (subsubsection.10.1.2) >> +endobj +252 0 obj +(10.1.2 Objects by Desugaring) +endobj +253 0 obj +<< /S /GoTo /D (subsubsection.10.1.3) >> +endobj +256 0 obj +(10.1.3 Objects as Named Collections) +endobj +257 0 obj +<< /S /GoTo /D (subsubsection.10.1.4) >> +endobj +260 0 obj +(10.1.4 Constructors) +endobj +261 0 obj +<< /S /GoTo /D (subsubsection.10.1.5) >> +endobj +264 0 obj +(10.1.5 State) +endobj +265 0 obj +<< /S /GoTo /D (subsubsection.10.1.6) >> +endobj +268 0 obj +(10.1.6 Private Members) +endobj +269 0 obj +<< /S /GoTo /D (subsubsection.10.1.7) >> +endobj +272 0 obj +(10.1.7 Static Members) +endobj +273 0 obj +<< /S /GoTo /D (subsubsection.10.1.8) >> +endobj +276 0 obj +(10.1.8 Objects with Self-Reference) +endobj +277 0 obj +<< /S /GoTo /D (subsubsection.10.1.9) >> +endobj +280 0 obj +(10.1.9 Dynamic Dispatch) +endobj +281 0 obj +<< /S /GoTo /D (subsection.10.2) >> +endobj +284 0 obj +(10.2 Member Access Design Space) +endobj +285 0 obj +<< /S /GoTo /D (subsection.10.3) >> +endobj +288 0 obj +(10.3 What \(Goes In\) Else?) +endobj +289 0 obj +<< /S /GoTo /D (subsubsection.10.3.1) >> +endobj +292 0 obj +(10.3.1 Classes) +endobj +293 0 obj +<< /S /GoTo /D (subsubsection.10.3.2) >> +endobj +296 0 obj +(10.3.2 Prototypes) +endobj +297 0 obj +<< /S /GoTo /D (subsubsection.10.3.3) >> +endobj +300 0 obj +(10.3.3 Multiple Inheritance) +endobj +301 0 obj +<< /S /GoTo /D (subsubsection.10.3.4) >> +endobj +304 0 obj +(10.3.4 Super-Duper!) +endobj +305 0 obj +<< /S /GoTo /D (subsubsection.10.3.5) >> +endobj +308 0 obj +(10.3.5 Mixins and Traits) +endobj +309 0 obj +<< /S /GoTo /D (section.11) >> +endobj +312 0 obj +(11 Memory Management) +endobj +313 0 obj +<< /S /GoTo /D (subsection.11.1) >> +endobj +316 0 obj +(11.1 Garbage) +endobj +317 0 obj +<< /S /GoTo /D (subsection.11.2) >> +endobj +320 0 obj +(11.2 What is ``Correct'' Garbage Recovery?) +endobj +321 0 obj +<< /S /GoTo /D (subsection.11.3) >> +endobj +324 0 obj +(11.3 Manual Reclamation) +endobj +325 0 obj +<< /S /GoTo /D (subsubsection.11.3.1) >> +endobj +328 0 obj +(11.3.1 The Cost of Fully-Manual Reclamation) +endobj +329 0 obj +<< /S /GoTo /D (subsubsection.11.3.2) >> +endobj +332 0 obj +(11.3.2 Reference Counting) +endobj +333 0 obj +<< /S /GoTo /D (subsection.11.4) >> +endobj +336 0 obj +(11.4 Automated Reclamation, or Garbage Collection) +endobj +337 0 obj +<< /S /GoTo /D (subsubsection.11.4.1) >> +endobj +340 0 obj +(11.4.1 Overview) +endobj +341 0 obj +<< /S /GoTo /D (subsubsection.11.4.2) >> +endobj +344 0 obj +(11.4.2 Truth and Provability) +endobj +345 0 obj +<< /S /GoTo /D (subsubsection.11.4.3) >> +endobj +348 0 obj +(11.4.3 Central Assumptions) +endobj +349 0 obj +<< /S /GoTo /D (subsection.11.5) >> +endobj +352 0 obj +(11.5 Convervative Garbage Collection) +endobj +353 0 obj +<< /S /GoTo /D (subsection.11.6) >> +endobj +356 0 obj +(11.6 Precise Garbage Collection) +endobj +357 0 obj +<< /S /GoTo /D (section.12) >> +endobj +360 0 obj +(12 Representation Decisions) +endobj +361 0 obj +<< /S /GoTo /D (subsection.12.1) >> +endobj +364 0 obj +(12.1 Changing Representations) +endobj +365 0 obj +<< /S /GoTo /D (subsection.12.2) >> +endobj +368 0 obj +(12.2 Errors) +endobj +369 0 obj +<< /S /GoTo /D (subsection.12.3) >> +endobj +372 0 obj +(12.3 Changing Meaning) +endobj +373 0 obj +<< /S /GoTo /D (subsection.12.4) >> +endobj +376 0 obj +(12.4 One More Example) +endobj +377 0 obj +<< /S /GoTo /D (section.13) >> +endobj +380 0 obj +(13 Desugaring as a Language Feature) +endobj +381 0 obj +<< /S /GoTo /D (subsection.13.1) >> +endobj +384 0 obj +(13.1 A First Example) +endobj +385 0 obj +<< /S /GoTo /D (subsection.13.2) >> +endobj +388 0 obj +(13.2 Syntax Transformers as Functions) +endobj +389 0 obj +<< /S /GoTo /D (subsection.13.3) >> +endobj +392 0 obj +(13.3 Guards) +endobj +393 0 obj +<< /S /GoTo /D (subsection.13.4) >> +endobj +396 0 obj +(13.4 Or: A Simple Macro with Many Features) +endobj +397 0 obj +<< /S /GoTo /D (subsubsection.13.4.1) >> +endobj +400 0 obj +(13.4.1 A First Attempt) +endobj +401 0 obj +<< /S /GoTo /D (subsubsection.13.4.2) >> +endobj +404 0 obj +(13.4.2 Guarding Evaluation) +endobj +405 0 obj +<< /S /GoTo /D (subsubsection.13.4.3) >> +endobj +408 0 obj +(13.4.3 Hygiene) +endobj +409 0 obj +<< /S /GoTo /D (subsection.13.5) >> +endobj +412 0 obj +(13.5 Identifier Capture) +endobj +413 0 obj +<< /S /GoTo /D (subsection.13.6) >> +endobj +416 0 obj +(13.6 Influence on Compiler Design) +endobj +417 0 obj +<< /S /GoTo /D (subsection.13.7) >> +endobj +420 0 obj +(13.7 Desugaring in Other Languages) +endobj +421 0 obj +<< /S /GoTo /D (section.14) >> +endobj +424 0 obj +(14 Control Operations) +endobj +425 0 obj +<< /S /GoTo /D (subsection.14.1) >> +endobj +428 0 obj +(14.1 Control on the Web) +endobj +429 0 obj +<< /S /GoTo /D (subsubsection.14.1.1) >> +endobj +432 0 obj +(14.1.1 Program Decomposition into Now and Later) +endobj +433 0 obj +<< /S /GoTo /D (subsubsection.14.1.2) >> +endobj +436 0 obj +(14.1.2 A Partial Solution) +endobj +437 0 obj +<< /S /GoTo /D (subsubsection.14.1.3) >> +endobj +440 0 obj +(14.1.3 Achieving Statelessness) +endobj +441 0 obj +<< /S /GoTo /D (subsubsection.14.1.4) >> +endobj +444 0 obj +(14.1.4 Interaction with State) +endobj +445 0 obj +<< /S /GoTo /D (subsection.14.2) >> +endobj +448 0 obj +(14.2 Continuation-Passing Style) +endobj +449 0 obj +<< /S /GoTo /D (subsubsection.14.2.1) >> +endobj +452 0 obj +(14.2.1 Implementation by Desugaring) +endobj +453 0 obj +<< /S /GoTo /D (subsubsection.14.2.2) >> +endobj +456 0 obj +(14.2.2 Converting the Example) +endobj +457 0 obj +<< /S /GoTo /D (subsubsection.14.2.3) >> +endobj +460 0 obj +(14.2.3 Implementation in the Core) +endobj +461 0 obj +<< /S /GoTo /D (subsection.14.3) >> +endobj +464 0 obj +(14.3 Generators) +endobj +465 0 obj +<< /S /GoTo /D (subsubsection.14.3.1) >> +endobj +468 0 obj +(14.3.1 Design Variations) +endobj +469 0 obj +<< /S /GoTo /D (subsubsection.14.3.2) >> +endobj +472 0 obj +(14.3.2 Implementing Generators) +endobj +473 0 obj +<< /S /GoTo /D (subsection.14.4) >> +endobj +476 0 obj +(14.4 Continuations and Stacks) +endobj +477 0 obj +<< /S /GoTo /D (subsection.14.5) >> +endobj +480 0 obj +(14.5 Tail Calls) +endobj +481 0 obj +<< /S /GoTo /D (subsection.14.6) >> +endobj +484 0 obj +(14.6 Continuations as a Language Feature) +endobj +485 0 obj +<< /S /GoTo /D (subsubsection.14.6.1) >> +endobj +488 0 obj +(14.6.1 Presentation in the Language) +endobj +489 0 obj +<< /S /GoTo /D (subsubsection.14.6.2) >> +endobj +492 0 obj +(14.6.2 Defining Generators) +endobj +493 0 obj +<< /S /GoTo /D (subsubsection.14.6.3) >> +endobj +496 0 obj +(14.6.3 Defining Threads) +endobj +497 0 obj +<< /S /GoTo /D (subsubsection.14.6.4) >> +endobj +500 0 obj +(14.6.4 Better Primitives for Web Programming) +endobj +501 0 obj +<< /S /GoTo /D (section.15) >> +endobj +504 0 obj +(15 Checking Program Invariants Statically: Types) +endobj +505 0 obj +<< /S /GoTo /D (subsection.15.1) >> +endobj +508 0 obj +(15.1 Types as Static Disciplines) +endobj +509 0 obj +<< /S /GoTo /D (subsection.15.2) >> +endobj +512 0 obj +(15.2 A Classical View of Types) +endobj +513 0 obj +<< /S /GoTo /D (subsubsection.15.2.1) >> +endobj +516 0 obj +(15.2.1 A Simple Type Checker) +endobj +517 0 obj +<< /S /GoTo /D (subsubsection.15.2.2) >> +endobj +520 0 obj +(15.2.2 Type-Checking Conditionals) +endobj +521 0 obj +<< /S /GoTo /D (subsubsection.15.2.3) >> +endobj +524 0 obj +(15.2.3 Recursion in Code) +endobj +525 0 obj +<< /S /GoTo /D (subsubsection.15.2.4) >> +endobj +528 0 obj +(15.2.4 Recursion in Data) +endobj +529 0 obj +<< /S /GoTo /D (subsubsection.15.2.5) >> +endobj +532 0 obj +(15.2.5 Types, Time, and Space) +endobj +533 0 obj +<< /S /GoTo /D (subsubsection.15.2.6) >> +endobj +536 0 obj +(15.2.6 Types and Mutation) +endobj +537 0 obj +<< /S /GoTo /D (subsubsection.15.2.7) >> +endobj +540 0 obj +(15.2.7 The Central Theorem: Type Soundness) +endobj +541 0 obj +<< /S /GoTo /D (subsection.15.3) >> +endobj +544 0 obj +(15.3 Extensions to the Core) +endobj +545 0 obj +<< /S /GoTo /D (subsubsection.15.3.1) >> +endobj +548 0 obj +(15.3.1 Explicit Parametric Polymorphism) +endobj +549 0 obj +<< /S /GoTo /D (subsubsection.15.3.2) >> +endobj +552 0 obj +(15.3.2 Type Inference) +endobj +553 0 obj +<< /S /GoTo /D (subsubsection.15.3.3) >> +endobj +556 0 obj +(15.3.3 Union Types) +endobj +557 0 obj +<< /S /GoTo /D (subsubsection.15.3.4) >> +endobj +560 0 obj +(15.3.4 Nominal Versus Structural Systems) +endobj +561 0 obj +<< /S /GoTo /D (subsubsection.15.3.5) >> +endobj +564 0 obj +(15.3.5 Intersection Types) +endobj +565 0 obj +<< /S /GoTo /D (subsubsection.15.3.6) >> +endobj +568 0 obj +(15.3.6 Recursive Types) +endobj +569 0 obj +<< /S /GoTo /D (subsubsection.15.3.7) >> +endobj +572 0 obj +(15.3.7 Subtyping) +endobj +573 0 obj +<< /S /GoTo /D (subsubsection.15.3.8) >> +endobj +576 0 obj +(15.3.8 Object Types) +endobj +577 0 obj +<< /S /GoTo /D (section.16) >> +endobj +580 0 obj +(16 Checking Program Invariants Dynamically: Contracts) +endobj +581 0 obj +<< /S /GoTo /D (subsection.16.1) >> +endobj +584 0 obj +(16.1 Contracts as Predicates) +endobj +585 0 obj +<< /S /GoTo /D (subsection.16.2) >> +endobj +588 0 obj +(16.2 Tags, Types, and Observations on Values) +endobj +589 0 obj +<< /S /GoTo /D (subsection.16.3) >> +endobj +592 0 obj +(16.3 Higher-Order Contracts) +endobj +593 0 obj +<< /S /GoTo /D (subsection.16.4) >> +endobj +596 0 obj +(16.4 Syntactic Convenience) +endobj +597 0 obj +<< /S /GoTo /D (subsection.16.5) >> +endobj +600 0 obj +(16.5 Extending to Compound Data Structures) +endobj +601 0 obj +<< /S /GoTo /D (subsection.16.6) >> +endobj +604 0 obj +(16.6 More on Contracts and Observations) +endobj +605 0 obj +<< /S /GoTo /D (subsection.16.7) >> +endobj +608 0 obj +(16.7 Contracts and Mutation) +endobj +609 0 obj +<< /S /GoTo /D (subsection.16.8) >> +endobj +612 0 obj +(16.8 Combining Contracts) +endobj +613 0 obj +<< /S /GoTo /D (subsection.16.9) >> +endobj +616 0 obj +(16.9 Blame) +endobj +617 0 obj +<< /S /GoTo /D (section.17) >> +endobj +620 0 obj +(17 Alternate Application Semantics) +endobj +621 0 obj +<< /S /GoTo /D (subsection.17.1) >> +endobj +624 0 obj +(17.1 Lazy Application) +endobj +625 0 obj +<< /S /GoTo /D (subsubsection.17.1.1) >> +endobj +628 0 obj +(17.1.1 A Lazy Application Example) +endobj +629 0 obj +<< /S /GoTo /D (subsubsection.17.1.2) >> +endobj +632 0 obj +(17.1.2 What Are Values?) +endobj +633 0 obj +<< /S /GoTo /D (subsubsection.17.1.3) >> +endobj +636 0 obj +(17.1.3 What Causes Evaluation?) +endobj +637 0 obj +<< /S /GoTo /D (subsubsection.17.1.4) >> +endobj +640 0 obj +(17.1.4 An Interpreter) +endobj +641 0 obj +<< /S /GoTo /D (subsubsection.17.1.5) >> +endobj +644 0 obj +(17.1.5 Laziness and Mutation) +endobj +645 0 obj +<< /S /GoTo /D (subsubsection.17.1.6) >> +endobj +648 0 obj +(17.1.6 Caching Computation) +endobj +649 0 obj +<< /S /GoTo /D (subsection.17.2) >> +endobj +652 0 obj +(17.2 Reactive Application) +endobj +653 0 obj +<< /S /GoTo /D (subsubsection.17.2.1) >> +endobj +656 0 obj +(17.2.1 Motivating Example: A Timer) +endobj +657 0 obj +<< /S /GoTo /D (subsubsection.17.2.2) >> +endobj +660 0 obj +(17.2.2 Callback Types are Four-Letter Words) +endobj +661 0 obj +<< /S /GoTo /D (subsubsection.17.2.3) >> +endobj +664 0 obj +(17.2.3 The Alternative: Reactive Languages) +endobj +665 0 obj +<< /S /GoTo /D (subsubsection.17.2.4) >> +endobj +668 0 obj +(17.2.4 Implementing Transparent Reactivity) +endobj +669 0 obj +<< /S /GoTo /D [670 0 R /Fit] >> +endobj +672 0 obj << +/Length 264 +/Filter /FlateDecode +>> +stream +xuMK09`L47U@-^C6`Ӓv .%
lH(i`يNQU@&M<#vMPok
+endstream
+endobj
+670 0 obj <<
+/Type /Page
+/Contents 672 0 R
+/Resources 671 0 R
+/MediaBox [0 0 612 792]
+/Parent 676 0 R
+>> endobj
+673 0 obj <<
+/D [670 0 R /XYZ 132.768 705.06 null]
+>> endobj
+674 0 obj <<
+/D [670 0 R /XYZ 133.768 667.198 null]
+>> endobj
+671 0 obj <<
+/Font << /F35 675 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+718 0 obj <<
+/Length 1251
+/Filter /FlateDecode
+>>
+stream
+x[oF)SAZ(sTm74njl