Software Design for Flexibility

How to Avoid Programming Yourself into a Corner

ISBN: 9780262363006 | Copyright 2021

Click here to preview

Instructor Requests

Digital Exam/Desk Copy Ancillaries
Tabs
Expand/Collapse All
Contents (pg. vii)
Foreword (pg. xi)
Preface (pg. xiii)
Acknowledgements (pg. xix)
1 Flexibility in Nature and in Design (pg. 1)
1.1 Architecture of computation (pg. 5)
1.2 Smart parts for flexibilty (pg. 7)
1.3 Redundancy and degeneracy (pg. 12)
1.4 Exploratory behavior (pg. 14)
1.5 The cost of flexibility (pg. 17)
2 Domain-Specific Languages (pg. 21)
2.1 Combinators (pg. 22)
2.2 Regular expressions (pg. 37)
2.3 Wrappers (pg. 46)
2.4 Abstracting a domain (pg. 52)
2.5 Summary (pg. 64)
3 Variations on an Arithmetic Theme (pg. 67)
3.1 Combining arithmetics (pg. 67)
3.2 Extensible generic procedures (pg. 87)
3.3 Example: Automatic differentiation (pg. 103)
3.4 Efficient generic procedures (pg. 125)
3.5 Efficient user-defined types (pg. 132)
3.6 Summary (pg. 154)
4 Pattern Matching (pg. 157)
4.1 Patterns (pg. 158)
4.2 Term rewriting (pg. 160)
4.3 Design of the matcher (pg. 170)
4.4 Unification match (pg. 183)
4.5 Pattern matching on graphs (pg. 209)
4.6 Summary (pg. 231)
5 Evaluation (pg. 233)
5.1 Generic eval/apply interpreter (pg. 234)
5.2 Procedures with non-strict arguments (pg. 250)
5.3 Compiling to execution procedures (pg. 259)
5.4 Exploratory behavior (pg. 269)
5.5 Exposing the underlying continuations (pg. 280)
5.6 Power and responsibility (pg. 296)
6 Layering (pg. 299)
6.1 Using layers (pg. 300)
6.2 Implementation of layering (pg. 301)
6.3 Layered arithmetic (pg. 309)
6.4 Annotating values with dependencies (pg. 315)
6.5 The promise of layering (pg. 323)
7 Propagation (pg. 327)
7.1 An example: Distances to stars (pg. 329)
7.2 The propagation mechanism (pg. 342)
7.3 Multiple alternative world views (pg. 349)
7.4 Merging values (pg. 351)
7.5 Searching possible worlds (pg. 355)
7.6 Propagation enables degeneracy (pg. 369)
8 Epilogue (pg. 373)
A Appendix: Supporting Software (pg. 377)
B Appendix: Scheme (pg. 379)
References (pg. 399)
Index (pg. 409)
List of Exercises (pg. 425)
eTextbook
Go paperless today! Available online anytime, nothing to download or install.