Software Design for Flexibility
How to Avoid Programming Yourself into a Corner
ISBN: 9780262363006 | Copyright 2021
Instructor Requests
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.
|