Files
softwaredesign/raw/book/설계원칙-476-541.md
minsung 44e26d6972 feat: LLM Wiki 세컨드 브레인 초기 셋팅
- CLAUDE.md 생성 (볼트 운영 규칙, Karpathy LLM Wiki 10가지 규칙)
- 나의 핵심 맥락.md 생성 (아키텍트 프로필, 세컨드 브레인 목적, 핵심 소스)
- raw/ 구조 정립 (book/기존 설계원칙 보존, articles/repos/notes/ 추가)
- wiki/ 초기화 (index.md, log.md, concepts/sources/patterns/ 폴더)
- output/ 초기화
- LLMWiki/ 기존 프롬프트 패턴 파일 보존

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 14:34:29 +09:00

1594 lines
55 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# **References**
- [1]Harold Abelson and Gerald Jay Sussman with Julie Sussman, *Structure and Interpretation of Computer Programs* (2nd ed.). Cambridge, MA: MIT Press, 1996.
- [2]Harold Abelson, Don Allen, Daniel Coore, Chris Hanson, George Homsy, Thomas F. Knight Jr., Radhika Nagpal, Erik Rauch, Gerald Jay Sussman, and Ron Weiss; "Amorphous Computing," in *Communications of the ACM*, 43(5) (May 2000): 7482.
- [3]Lee Altenberg; "The Evolution of Evolvability in Genetic Programming," in *Advances in Genetic Programming*, ed. Kenneth E. Kinnear Jr., 4774. Cambridge, MA: MIT Press, 1994.
- [4]*The ARRL Handbook for Radio Amateurs*, American Radio Relay League, Newington, CT (annual).
- [5]Jean-Paul Arcangeli and Christian Pomian; "Principles of Plasma Pattern and Alternative Structure Compilation," in *Theoretical Computer Science*, 71 (1990): 177191.
- [6]Franz Baader and Wayne Snyder; "Unification theory," in *Handbook of Automated Reasoning*, ed. Alan Robinson and Andrei Voronkov. Elsevier Science Publishers B.V., 2001.
- [7]Jonathan B.L. Bard; *Morphogenesis*, Cambridge: Cambridge University Press, 1990.
- [8]Alan Bawden and Jonathan Rees; "Syntactic closures," in *Proc. Lisp and Functional Programming* (1988).
- [9]Jacob Beal; *Generating Communications Systems Through Shared Context*, S.M. thesis, MIT, also Artificial Intelligence Laboratory Technical Report 2002-002, January 2002.
- [10]Jacob Beal; "Programming an Amorphous Computational Medium," in *Unconventional Programming Paradigms International Workshop* (September 2004). Updated version in Lecture Notes in Computer Science, 3566 (August 2005).
- [11]M.R. Bernfield, S.D. Banerjee, J.E. Koda, and A.C. Rapraeger; "Remodelling of the basement membrane as a mechanism of morphogenic tissue interaction," in *The role of extracellular matrix in development*, ed. R.L. Trelstad, 542572. New York: Alan R. Liss, 1984.
- [12]Martin Berz; "Automatic differentiation as nonarchimedean analysis," in *Computer Arithmetic and Enclosure Methods*, ed. L. Atanassova and J. Herzberger. Elsevier Science Publishers B.V. (North-Holland), 1992.
- [13]Philip L. Bewig; *Scheme Requests for Implementation 41: Streams* (2008). <https://srfi.schemers.org/srfi-41/>
- [14]R.C. Bohlin and R.L. Gilliland; "Hubble Space Telescope Absolute Spectrophotometry of Vega from the Far-Ultraviolet to the Infrared," in *The Astronomical Journal*, 127(6) (June 2004): 35083515.
- [15]J.P. Brocks; "Amphibian limb regeneration: rebuilding a complex structure," in *Science*, 276 (1997): 8187.
- [16]Alonzo Church; *The Calculi of Lambda-Conversion*. Princeton, NJ: Princeton University Press, 1941.
- [17]Alonzo Church; "An Unsolvable Problem of Elementary Number Theory," *American Journal of Mathematics*, 58 (1936): 345
- [18]Alonzo Church; "A Note on the Entscheidungsproblem," in *Journal of Symbolic Logic*, 1 (1936): 4041.
- [19]Lauren Clement and Radhika Nagpal; "Self-Assembly and Self-Repairing Topologies," in *Workshop on Adaptability in Multi-Agent Systems*, RoboCup Australian Open, January 2003.
- [20]William Kingdon Clifford; "Preliminary sketch of biquaternions," in *Proceedings of the London Mathematical Society*, 4 (1873): 381 395.
- [21]William Clinger; "Nondeterministic Call by Need is Neither Lazy Nor by Name," in *Proceedings of the 1982 ACM symposium on LISP and functional programming*, 226234 (August 1982).
- [22]William Clinger and Jonathan Rees; "Macros that work," in *Proceedings of the 1991 ACM Conference on Principles of Programming Languages*, 155162 (1991).
- [23]A Colmerauer., H. Kanoui, R. Pasero, and P. Roussel; *Un système de communication homme-machine en français*, Technical report, Groupe Intelligence Artificielle, Université d'Aix Marseille, Luminy, 1973.
- [24]*Constraints, An International Journal* ISSN: 1383-7133 (Print) 1572-9354 (Online).
- [25]Wikipedia article on continuations. <https://en.wikipedia.org/wiki/Continuation>
- [26]Haskell Brooks Curry; "Grundlagen der Kombinatorischen Logik," in *American Journal of Mathematics*. Baltimore: Johns Hopkins University Press, 1930.
- [27]Johan deKleer, Jon Doyle, Guy Steele, and Gerald J. Sussman; "AMORD: Explicit control of reasoning," in *Proceedings of the*
- *ACM Symposium on Artificial Intelligence and Programming Languages*, 116125 (1977).
- [28]E.M. del Pino and R.P. Elinson; "A novel developmental pattern for frogs: gastrulation produces an embryonic disk," in *Nature*, 306 (1983): 589591.
- [29]Howard P. Dinesman; *Superior Mathematical Puzzles*. New York: Simon and Schuster, 1968.
- [30]Jon Doyle; "A truth maintenance system," in *Artificial Intelligence*, 12 (1979): 231272.
- [31]K. Dybvig, R. Hieb, and C. Bruggerman; "Syntactic abstraction in Scheme," in *Proc. Lisp and Symbolic Computation* (1993).
- [32]G.M. Edelman and J.A. Gally; "Degeneracy and complexity in biological systems," *Proceedings of the National Academy of Sciences*, 98 (2001): 1376313768.
- [33]M. D. Ernst, C. Kaplan, and C. Chambers; "Predicate Dispatching: A Unified Theory of Dispatch," in *ECOOP'98— Object-Oriented Programming: 12th European Conference*, *Proceedings*, ed. Eric Jul, 186211, Lecture Notes in Computer Science, 1445. Berlin: Springer, 1998.
- [34]Zsuzsa Farkas; "LISTLOG—A PROLOG extension for list processing," in *TAPSOFT 1987*, ed. Ehrig H., Kowalski R., Levi G., Montanari U., Lecture Notes in Computer Science, 250. Berlin: Springer, 1987.
- [35]Robert Floyd; "Nondeterministic algorithms," in *Journal of the ACM*, 14(4) (1967): 636644.
- [36]Kenneth D. Forbus and Johan de Kleer; *Building Problem Solvers*. Cambridge, MA: MIT Press, 1993.
- [37]Stefanie Forrest, Anil Somayaji, David H. Ackley; "Building Diverse Computer Systems," in *Proceedings of the 6th*
- *workshop on Hot Topics in Operating Systems*, 6772. Los Alamitos, CA: IEEE Computer Society Press, 1997.
- [38]Joseph Frankel; *Pattern Formation, Ciliate Studies and Models*. New York: Oxford University Press, 1989.
- [39]Eugene C. Freuder; *Synthesizing Constraint Expressions*. AI Memo 370, MIT Artificial Intelligence Laboratory, July 1976.
- [40]Daniel P. Friedman and David S. Wise; "Cons should not evaluate its arguments," in *Automata Languages and Programming*; Proc. Third International Colloquium at the University of Edinburgh, ed. S. Michaelson and R. Milner, 257 284 (July 1976).
- [41]Daniel P. Friedman, Mitchell Wand, and Christopher T. Haynes; *Essentials of Programming Languages.* Cambridge, MA: MIT Press/McGraw-Hill, 1992.
- [42]Richard P. Gabriel and Linda DeMichiel; "The Common Lisp Object System: An Overview," in *Proceedings of ECOOP'87. European Conference on Object-Oriented Programming*, ed. Jean Bezivin, Jean-Marie Hullot, Pierre Cointe, and Henry Lieberman, 151170. Paris: Springer, 1987.
- [43]George Gatewood and Joost Kiewiet de Jonge; "Map-based Trigonometric Parallaxes of Altair and Vega," in *The Astrophysical Journal*, 450 (September 1995): 364368.
- [44]George Gatewood; "Astrometric Studies of Aldebaran, Arcturus, Vega, the Hyades, and Other Regions," in *The Astronomical Journal*, 136(1) (2008): 452460.
- [45]Kurt Gödel; "On Undecidable Propositions of Formal Mathematical Systems," *Lecture notes taken by Kleene and Rosser at the Institute for Advanced Study* (1934), reprinted in Martin Davis *The Undecidable: Basic Papers on Undecidable Propositions, Unsolvable Problems and Computable Functions*, 3974. New York: Raven, 1965.
- [46]Adele Goldberg and David Robson; *Smalltalk-80: The Language and Its Implementation*. Reading, MA: Addison-Wesley, 1983.
- [47]Michael Gordon, Robin Milner, and Christopher Wadsworth; *Edinburgh LCF*, Lecture Notes in Computer Science, 78. New York: Springer-Verlag, 1979.
- [48]Cordell Green; "Application of theorem proving to problem solving," in *Proceedings of the International Joint Conference on Artificial Intelligence*, 219240 (1969).
- [49]Cordell Green and Bertram Raphael; "The use of theoremproving techniques in question-answering systems," in *Proceedings of the ACM National Conference*, 169181 (1968).
- [50]John V. Guttag; "Abstract data types and the development of data structures," *Communications of the ACM*, 20(6) (1977): 397404.
- [51]Chris Hanson; *MIT/GNU Scheme Reference Manual*. <https://www.gnu.org/software/mit-scheme/>
- [52]Chris Hanson; SOS software: Scheme Object System, 1993.
- [53]Chris Hanson, Tim Berners-Lee, Lalana Kagal, Gerald Jay Sussman, and Daniel Weitzner; "Data-Purpose Algebra: Modeling Data Usage Policies," in *Eighth IEEE International Workshop on Policies for Distributed Systems and Networks (POLICY'07)*, (June 2007).
- [54]Hyman Hartman and Temple F. Smith; "The Evolution of the Ribosome and the Genetic Code," in *Life*, 4 (2014): 227249.
- [55]Jacques Herbrand; "Sur la non-contradiction de larithmetique," *Journal fur die reine und angewandte Mathematik*, 166 (1932): 18.
- [56]Carl E. Hewitt; "PLANNER: A language for proving theorems in robots," in *Proceedings of the International Joint Conference on Artificial Intelligence*, 295301 (1969).
- [57]Carl E. Hewitt; "Viewing control structures as patterns of passing messages," in *Journal of Artificial Intelligence*, 8(3) (1977): 323364.
- [58]Carl Hewitt, Peter Bishop, Richard Steiger; "A Universal Modular ACTOR Formalism for Artificial Intelligence," in *IJCAI-73: Proceedings of the Third International Joint Conference on Artificial Intelligence*, 235245 (1973).
- [59]Edwin Hewitt; "Rings of real-valued continuous functions. I," in *Transactions of the American Mathematical Society*, 64 (1948): 4599.
- [60]Paul Horowitz and Winfield Hill; *The Art of Electronics*. Cambridge: Cambridge University Press, 1980.
- [61]IEEE Std 1178-1990, *IEEE Standard for the Scheme Programming Language*, Institute of Electrical and Electronic Engineers, Inc., 1991.
- [62]Paul-Alan Johnson; *The Theory of Architecture: Concepts, Themes, & Practices*. New York: Van Nostrand Reinhold, 1994.
- [63]Jerome H. Keisler; "The hyperreal line. Real numbers, generalizations of the reals, and theories of continua," in *Synthese Library*, 242, 207237. Dordrecht: Kluwer Academic, 1994.
- [64]Richard Kelsey, William Clinger, and Jonathan Rees (editors); *Revised* <sup>5</sup> *Report on the Algorithmic Language Scheme* (1998).
- [65]Richard Kelsey; *Scheme Requests for Implementation 9: Defining Record types* (1999). <https://srfi.schemers.org/srfi-9/>
- [66]Gregor Kiczales; Tiny CLOS software: Kernelized CLOS, with a metaobject protocol, 1992.
- [67]Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Videira Lopes, Jean-Marc Loingtier, and John Irwin; "Aspect-oriented programming," in *ECOOP'97: Proceedings of the 11th European Conference on Object-Oriented Programming*, 220242 (1997).
- [68]Gregor Kiczales, Jim des Rivieres, and Daniel G. Bobrow; *The Art of the Metaobject Protocol*. Cambridge, MA: MIT Press, 1991.
- [69]Simon Kirby; *Language evolution without natural selection: From vocabulary to syntax in a population of learners.*, Edinburgh Occasional Paper in Linguistics EOPL-98-1, University of Edinburgh Department of Linguistics (1998).
- [70]Marc W. Kirschner and John C. Gerhart; *The Plausibility of Life: Resolving Darwin's Dilemma*. New Haven: Yale University Press, 2005.
- [71]Marc W. Kirschner, Tim Mitchison; "Beyond self-assembly: from microtubules to morphogenesis," in *Cell*, 45(3) (May 1986): 329342.
- [72]D. Knuth, P. Bendix; "Simple word problems in universal algebras," in *Computational Problems in Abstract Algebra*, ed. John Leech, 263297. London: Pergamon Press, 1970.
- [73]E. Kohlbecker, D. P. Friedman, M. Felleisen, and B. Duba; "Hygienic Macro Expansion," in *ACM Conference on LISP and Functional Programming* (1986).
- [74]E. Kohlbecker and Mitchell Wand; "Macro-by-example: Deriving syntactic transformations from their specifications," in *Proc. Symposium on Principles of Programming Languages* (1987).
- [75]Milos Konopasek and Sundaresan Jayaraman; *The TK!Solver Book: A Guide to Problem-Solving in Science, Engineering, Business, and Education.* Berkeley, CA: Osborne/McGraw-Hill, 1984.
- [76]Robert Kowalski; *Predicate logic as a programming language*, Technical report 70, Department of Computational Logic, School of Artificial Intelligence, University of Edinburgh, 1973.
- [77]Robert Kowalski; *Logic for Problem Solving*. New York: North-Holland, 1979.
- [78]Robert M. Kowalski; "The Early Years of Logic Programming," in *Communications of the ACM*, 31(1) (January 1988): 3843.
- [79]Temur Kutsia; "Pattern Unification with Sequence Variables and Flexible Arity Symbols," in *Electronic Notes in Theoretical Computer Science*, 66(5) (2002): 5269.
- [80]Butler Lampson, J. J. Horning, R. London, J. G. Mitchell, and G. K. Popek; *Report on the programming language Euclid*, Technical report, Computer Systems Research Group, University of Toronto, 1981.
- [81]Peter Landin; "A correspondence between Algol 60 and Church's lambda notation: Part I," *Communications of the ACM*, 8(2) (1965): 89101.
- [82]Henrietta S. Leavitt; "1777 variables in the Magellanic Clouds," in *Annals of Harvard College Observatory*, 60 (1908): 87108.
- [83]Floor Van Leeuwen; "Validation of the new Hipparcos reduction," in *Astronomy & Astrophysics*, 474(2) (2007): 653 664.
- [84]Karl Lieberherr; *Informationsverdichtung von Modellen in der Aus-sagenlogik und das P=NP Problem*, ETH Dissertation, 1977.
- [85]Barbara H. Liskov and Stephen N. Zilles; " Specification techniques for data abstractions," in *IEEE Transactions on Software Engineering*, 1(1) (1975): 719.
- [86]Harvey Lodish, Arnold Berk, S Lawrence Zipursky, Paul Matsudaira, David Baltimore, and James E Darnell; *Molecular Cell Biology* (4th ed.). New York: W. H. Freeman & Co., 1999.
- [87]Oleksandr Manzyuk, Barak A. Pearlmutter, Alexey Andreyevich Radul, David R. Rush, and Jeffrey Mark Siskind; "Confusion of Tagged Perturbations in Forward Automatic Differentiation of Higher-Order Functions," arxiv:1211.4892 (2012).
- [88]David Allen McAllester; *A three-valued truth-maintenance system*, AI Memo 473, MIT Artificial Intelligence Laboratory, 1978.
- [89]David Allen McAllester "An outlook on truth maintenance," AI Memo 551, MIT Artificial Intelligence Laboratory, 1980.
- [90]John McCarthy; "A basis for a mathematical theory of computation," in *Computer Programming and Formal Systems*, ed. P. Braffort and D. Hirshberg, 3370. Amsterdam: North-Holland, 1963.
- [91]Wikipedia article on MDL. <https://en.wikipedia.org/wiki/MDL> (programming language)
- [92]Piotr Mitros; *Constraint-Satisfaction Modules: A Methodology for Analog Circuit Design*, PhD thesis, MIT, Department of Electrical Engineering and Computer Science, 2007.
- [93]Paul Penfield Jr.; *MARTHA User's Manual*, MIT Research Laboratory of Electronics, Electrodynamics Memorandum No. 6 (1970).
- [94]Barak A. Perlmutter and Jeffrey Mark Siskind; "Lazy Multivariate Higher-Order Forward-Mode AD," in *Proc. POPL'07*, 155160. New York: ACM, 2007.
- [95]Tim Peters; *PEP 20—The Zen of Python*. <http://www.python.org/dev/peps/pep-0020/>
- [96]*POSIX.1-2017*, "Base Definitions," Chapter 9, "Regular Expressions." <http://pubs.opengroup.org/onlinepubs/9699919799/>
- [97]Jonathan Bruce Postel; *RFC 760: DoD standard Internet Protocol* (January 1980). http://www.rfc[editor.org/rfc/rfc760.txt](http://www.rfc-editor.org/rfc/rfc760.txt)
- [98]W. H. Press, B. P. Flannery, S. A. Teukolsky, and W. T. Vetterling; "Richardson Extrapolation and the Bulirsch-Stoer Method," in *Numerical Recipes in C: The Art of Scientific Computing* (2nd ed.), 718725. Cambridge: Cambridge University Press, 1992.
- [99]Alexey Andreyevich Radul and Gerald Jay Sussman; "The Art of the Propagator," MIT CSAIL Technical Report MIT-CSAIL-TR-2009-002; Abridged version in *Proc. 2009 International Lisp Conference* (March 2009). <http://hdl.handle.net/1721.1/44215>
- [100]Alexey Andreyevich Radul; *Propagation networks: a flexible and expressive substrate for computation*, PhD thesis, MIT, Department of Electrical Engineering and Computer Science, 2009. <http://hdl.handle.net/1721.1/54635>
- [101]Eric Raymond; *The New Hacker's Dictionary* (2nd ed.). Cambridge, MA: MIT Press, 1993.
- [102]Jonathan A. Rees and Norman I. Adams IV; "T: A dialect of Lisp or, lambda: The ultimate software tool," in *Conference Record of the 1982 ACM Symposium on Lisp and Functional Programming*, 114122 (1982).
- [103]John C. Reynolds; "The discoveries of continuations," in *Proc. Lisp and Symbolic Computation*, 233248 (1993).
- [104]J.A. Robinson; "A Machine-Oriented Logic Based on the Resolution Principle," in *Journal of the ACM*, 12(1) (January 1965): 2341.
- [105]Guido van Rossum; *The Python Language Reference Manual*, ed. Fred L. Drake Jr., Network Theory Ltd, 2003.
- [106]Jane L. Russell, George D. Gatewood, and Thaddeus F. Worek; "Parallax Studies of Four Selected Fields," in *The Astronomical Journal*, 87(2) (February 1982): 428432.
- [107]Erik Sandewall; "From systems to logic in the early development of nonmonotonic reasoning," in *Artificial Intelligence*, 175 (2011): 416427.
- [108]Moses Schönfinkel; "Uber die Bausteine der mathematischen Logik," in *Mathematische Annalen*, 92 (1924): 305316.
- [109]Alex Shinn, John Cowan, and Arthur Gleckler (editors); *Revised* <sup>7</sup> *Report on the Algorithmic Language Scheme* (2013). <http://www.r7rs.org/>
- [110]Alex Shinn; *Scheme Requests for Implementation 115: Scheme Regular Expressions* (2014). [https://srfi.schemers.org/srfi-](https://srfi.schemers.org/srfi-115/)115/
- [111]Jeffrey Mark Siskind and Barak A. Perlmutter; "Perturbation confusion and referential transparency: Correct functional implementation of forward-mode AD," in *Implementation and application of functional languages17th international workshop*, ed. Andrew Butterfield, Trinity College Dublin Computer Science Department Technical Report TCD-CS-2005-60, 2005.
- [112]Brian Cantwell Smith; *Procedural Reflection in Programming Languages*, PhD thesis, MIT, Department of Electrical Engineering and Computer Science, 1982.
- [113]Richard Matthew Stallman; *EMACS: The Extensible, Customizable, Self-Documenting Display Editor*, AI Memo 519A, MIT Artificial Intelligence Laboratory, March 1981.
- [114]Richard Matthew Stallman and Gerald Jay Sussman; "Forward Reasoning and Dependency-Directed Backtracking in a System for Computer-Aided Circuit Analysis," in *Artificial Intelligence*, 9 (1977): 135196.
- [115]Guy Lewis Steele Jr.; *Common Lisp the language*. Maynard, MA: Digital Equipment Corporation, 1990.
- [116]Guy L. Steele Jr.; *The Definition and Implementation of a Computer Programming Language Based on Constraints*, PhD thesis, MIT, also Artificial Intelligence Laboratory Technical Report 595, August 1980.
- [117]Guy Lewis Steele Jr., Donald R. Woods, Raphael A. Finkel, Mark R. Crispin, Richard M. Stallman, and Geoffrey S. Goodfellow; *The Hacker's Dictionary*. New York: Harper & Row, 1983.
- [118]Patrick Suppes; *Introduction to Logic*. New York: D. Van Nostrand, 1957.
- [119]Gerald Jay Sussman and Richard Matthew Stallman; "Heuristic Techniques in Computer-Aided Circuit Analysis," in *IEEE Transactions on Circuits and Systems*, 22(11) (November 1975): 857865.
- [120]Gerald Jay Sussman and Guy L. Steele Jr; "The First Report on Scheme Revisited," in *Higher-Order and Symbolic Computation*, 11(4) (December 1998): 399404.
- [121]Gerald Jay Sussman and Jack Wisdom; *Structure and Interpretation of Classical Mechanics*. Cambridge, MA: MIT Press, 2001/2014.
- [122]Gerald Jay Sussman and Jack Wisdom with Will Farr; *Functional Differential Geometry*. Cambridge, MA: MIT Press, 2013.
- [123]*The TTL Data Book for Design Engineers*, by the Engineering Staff of Texas Instruments Incorporated, Semiconductor Group.
- [124]Alan M. Turing; "On Computable Numbers, with an Application to the Entscheidungsproblem," in *Proceedings of the London Mathematical Society (Series 2)*, 42 (1936): 230 265.
- [125]David L. Waltz; *Generating Semantic Descriptions From Drawings of Scenes With Shadows*, PhD thesis, MIT, also Artificial Intelligence Laboratory Technical Report 271, November 1972. <http://hdl.handle.net/1721.1/6911>
- [126]Stephen A. Ward and Robert H. Halstead Jr.; *Computation Structures*. Cambridge, MA: MIT Press, 1990.
- [127]Stephen Webb; *Measuring the Universe: The Cosmological Distance Ladder*, Springer-Praxis Series in Astronomy and Astrophysics. Berlin: Springer, 1999.
- [128]Daniel J. Weitzner, Hal Abelson, Tim Berners-Lee, Chris Hanson, Jim Hendler, Lalana Kagal, Deborah McGuinness, Gerald Jay Sussman, and K. Krasnow Waterman; *Transparent Accountable Data Mining: New Strategies for Privacy Protection*, MIT CSAIL Technical Report MIT-CSAIL-TR-2006- 007, January 2006.
- [129]Robert Edwin Wengert; "A simple automatic derivative evaluation program," in *Communications of the ACM*, 7(8) (1964): 463464.
- [130]Carter Wiseman; *Louis I. Kahn: Beyond Time and Style: A Life in Architecture*. New York: W.W. Norton, 2007.
- [131]Lewis Wolpert, Rosa Beddington, Thomas Jessell, Peter Lawrence, Elliot Meyerowitz, and Jim Smith; *Principles of Development* (2nd ed.). Oxford: Oxford University Press, 2001.
- [132]Ramin Zabih, David McAllester, and David Chapman; "Nondeterministic Lisp with dependency-directed backtracking," in *AAAI-87*. (1987): 5964.
# **Index**
Any inaccuracies in this index may be explained by the fact that it has been prepared with the help of a computer.
Donald E. Knuth, *Fundamental Algorithms* (Volume 1 of *The Art of Computer Programming*)
Page numbers for Scheme procedure definitions are in *italics*. Page numbers followed by *n* indicate footnotes.
```
% naming convention, 152
! naming convention, 393 n
λ (lambda) calculus, 1 n
λ expression. See lambda
λ notation, 380 n
π (pi), 381
+->interval, 333
' (quote in Scheme), 390
' (backquote in Scheme), 391
, (comma) in backquote, 391
- (negation or subtraction), 390
```
pattern-directed, 168
```
. in formal parameters, 267 (ex. 5.12), 389
. in printed representation of pair, 387
/ in rational constant, 47
;. See Semicolon
? for pattern variable, 158
? in predicate name, 386 n
?? for segment variable, 159
?* in graph matching, 215
() in Scheme (empty list), 387
(...) in Scheme, 380
# in Scheme vector printout, 388
# in character constant, 40
#!optional parameter, 118
#f (false), 386
#t (true), 386
a:, 274 n
a:advance, 274, 275
a:apply, 274
Abelson, Harold, 114 n, 118 n
Abstract predicate, 134
accumulate, 389
Activation policy for propagator, 347
ACTOR framework message passing, 396 n
add-arithmetics, 77
```
add-cell-content!, *346*
```
add-cell-neighbor!, 346
add-content!, 344
add-streams, 255
add-to-generic-arithmetic!, 91
address-of, 218
address=, 219
advance. See a:advance; g:advance; x:advance
Adventure game, 138152
inheritance, 140
object properties, 139, 142, 145
Algebra rules, 161163
segment variables in, 162
Algol-60 thunk, 253 n
Alist (association list), 303
all-args, 74
all-knight-moves, 214
Alternative in conditional, 384
Alternative values, set of, 350
Alternative world views and propagation, 349351
Alyssa P. Hacker, 44 (ex. 2.7), 277 (ex. 5.17)
amb, 271. See also Backtracking
continuation implementation, 288292
evaluator implementation, 273277
order of alternatives, 277, 279
(ex. 5.20), 290292, 294 (ex. 5.23)
```
### propagation implementation, 355364
## Amorphous Computing, 10 *n*
analyze, *260*. *See also* x:analyze
analyze-amb, *277*
analyze-application, *260* , 268
(ex. 5.13), *275*
analyze-assignment, *263* , *276*
analyze-begin, *263*
analyze-definition, *264*
analyze-if, *262* , *275*
analyze-lambda, *262*
analyze-quoted, *261*
analyze-self-evaluating, *261*
analyze-undoable-assignment, *276*
analyze-variable, *261*
Anna Logue, 340 (ex. 7.2)
annotate-expr, *196*
Annotation layer, 304
any-arg, 76
any-object?, 91
APL, 87 *n*
Applicability of procedure, 73, 76, 78, 88, 98
application?, *236*
Application of procedures, 235, 244246
Applicative order, 234, 245
```
apply, 23, 375
in evaluator, 234 (see also a:apply; g:apply; x:apply)
with "extra" argument, 85 (ex. 3.2)
Architecture
parti , 5, 299
of programs, 56
Arguments
indefinite number of (see n-ary procedure)
in Scheme, 250, 380
non-strict, 250
strict, 251
Arithmetic. See also Arithmetic package; Combinators: arithmetic
combinators
boolean, 84 (ex. 3.1)
on functions, 8083
generic (see Generic arithmetic) layered, 309310
symbolic, 7173
with units, 310314
on vectors, 85 (ex. 3.2)
Arithmetic operators modulating, 7173
Arithmetic package, 71
combining arithmetics, 7380
Arity. See also n-ary procedure
of function, 23, 27
of operator, 74
procedure-arity, 28
```
```
Armstrong, Edwin, 10 (fig. 1.1)
Aspect-oriented programming, 88 n
assert! in propagator, 336, 349
assert in Scheme, 28
Assignment
! naming convention, 393 n
backtracking and, 276
in evaluator, 243
in Scheme, 392394
set!, 393
assignment?, 243
assignment-value, 243
assignment-variable, 243
Association list (alist), 303
Astronomy
distances to stars, 329
magnitudes of stars, 336
attach-rule!, 168, 170
Automagically, 10
Automatic differentiation, 103
generic arithmetic handlers for, 107110
higher-order functions, 119
literal functions, 123
n-ary functions, 111
Newton's method using, 104
```
```
Autonomous agent in game, 139, 140, 144
Avatar in game, 139
Backquote in Scheme, 391
Backtracking, 269271. See also Exploratory behavior; Generate and
test; Search
amb (see amb)
assignment and, 276
continuations and, 287, 288289
dependency-directed (see Dependency-directed backtracking)
generate and test, 16
language and, 270271
rules and, 162, 164
segment variables and, 172
Ballantyne, Michael, 203 n
Bard, Jonathan B. L., 16 n
base-layer, 303
base-layer-value, 305
basic-knight-move, 213
basic-queen-move, 215
Beal, Jacob, 8 n
begin?, 242
begin, in evaluator and Scheme, 242
begin-actions, 242
Belief status of premise, 349
Ben Bitdiddle, 44 (ex. 2.7), 277 (ex. 5.17)
```
```
Bessel, Friedrich Wilhelm, 332
binary-amb, 360
Binary amb, 359363
Binding, 381 n
of formal parameters, 234, 246
of pattern variables, 170, 172, 175
Biology, ideas from, 817
board-addresses, 217
Board game domain model, 53
checkers, 5455, 59
Body
of let expression, 385
of procedure, 234, 381
Body plan, 912
animal, 9
combinators and, 11, 36
domain-specific language, 11
radio receiver, 10
software, 11
Bohlin, R.C., 337
boolean?, 84 (ex. 3.1)
Boolean arithmetic, 84 (ex. 3.1)
Boolean values, 386
Bourne shell, 42
BRE (Basic Regular Expression), 38
```
```
Breadth-first search, 290292
Brittle software, 1
Bundle, 395397
bundle, 396
Byrd, Will, 203 n
C, 65, 238
C++ and overloading, 154
c:, 331 (fig. 7.3)
cache-wrapped-dispatch-store, 132
Caching, for generic dispatch, 131
call-with-current-continuation, 282
call-with-values, 31 n
call/cc, 282
Call by need, 245, 251
capture?, 223
car, 387
Carroll, Lewis, 285 n
cdr, 387
Cell (propagation), 342, 343346
cell-merge, 344
cell-strongest, 346
chaining-generic-procedure, 138
Chapman, David, 358 n
Checkers, 5364
domain model, 5455, 59
```
```
Chen, Kenny, 203 n
Chess, 64 (ex. 2.12), 213224
board as graph, 216
compiling move patterns to matcher procedures, 225231
knight move patterns, 213, 214
making moves, 221
move patterns on board graph, 213
queen move patterns, 215
Choice, nondeterministic. See amb
Choice propagator, 356364. See also binary-amb; p:amb
Church, Alonzo, 1 n, 380 n
Circuit, electrical, 340 (ex. 7.2)
Clausal learning, 358 n
Clause in conditional, 383
Clifford, William Klingdon, 106 n
Clinger, William, 277 n
CLOS, 88 n
Code smell, 6 n
Colmerauer, Alain, 271, 370 n
color, 218
Combination in Scheme, 235, 380. See also Procedure: application
of
Combinatorial puzzles, 277 (ex. 5.17), 364367
Combinator language, 11, 30
Combinators, 11, 2236
arithmetic combinators, 6784
```
```
body plans and, 11, 36
function combinators, 2329 (see also Function combinators)
for pattern matching, 170, 175
problems with, 83, 88
for regular expressions, 3843
system of, 21, 22
combined-arithmetic, 79
Combining arithmetics, 7380
Comma in backquote, 391
Common Lisp Object System, 88 n
Compiler optimization, 160, 259, 269 (ex. 5.15)
assignment and, 264
constant folding, 268 (ex. 5.14)
peephole, 168
Compile time, 259
Compiling, 259
for graph patterns, 225231
formal-parameter declarations, 269 (ex. 5.16)
for pattern matching, 176179
to execution procedures, 259267, 273277 (see also
analyze-...)
to propagator networks, 337 n, 340 (ex. 7.1), 367 (ex. 7.6)
to regular expressions, 3943
complement, 203 n, 309 n
compose, 23 , 24 (fig. 2.1), 32 , 382
compound-propagator, 347
```
```
Compound data in Scheme, 386389
cond
in evaluator, 241
in Scheme, 383
cond?, 241
cond-clause-consequent, 241
cond-clause-predicate, 241
cond-clauses, 241
cond->if, 241
Conditionals
in evaluator, 238
in Scheme, 383384
conjoin, 309 n
connect!, 212
connect-up-square, 219
cons, 387
g:cons (graph version), 210
Consequent in conditional, 383, 384
Consequent of rule, 161
constant-union, 77
Constant folding, 268 (ex. 5.14)
Constraint propagator (c:), 330, 331 (fig. 7.3)
Constructors in Scheme, 386
Continuation-passing style, 280281
for amb, 273
```
```
in matcher, 170
in rule system, 164
in unifier, 186
Continuations in Scheme, 280287
backtracking and, 287, 288289
call/cc, 282
call-with-current-continuation, 282
nonlocal exits, 284285
nonlocal transfer of control, 285287
underlying, 281287
Contradiction object for
propagation, 345
Correctness vs. flexibility, 18
Curry, Haskell, 34
curry-argument, 34 , 34 (fig. 2.6)
Currying, 34
for multiple arguments, 138 n
partial derivatives and, 113 (ex.
3.8)
Cy D. Fect, 277 (ex. 5.17)
Data
layered, 302305
restrictions on use of, 324
tagged, 134, 155
Data-purpose algebra, 325
```
```
Debugging, 24 n, 260, 268 (ex. 5.13). See also Paranoid
programming
dependencies for, 315, 322, 329
numerical code, 71, 96, 100
Declarations
compiling, 269 (ex. 5.16)
constants, 268 (ex. 5.14)
on formal parameters, 233, 250
inferred type, 195
layering for, 6, 299, 321 (ex. 6.4)
lazy and lazy memo formal parameters, 253
optional parameter, 258 (ex. 5.11)
record type, 388
relationships between predicates, 135, 155
rest parameter, 258 (ex. 5.11)
restrictions on formal parameters, 257 (ex. 5.10)
restrictions on pattern variables, 163
default-object, 75 n
default-object?, 75 n
define
'.' for rest parameters, 267 (ex. 5.12), 389
in evaluator, 244
in Scheme, 381
define-c:prop, 348
define-clock-handler, 145
define-generic-procedure-handler, 89, 99
```
```
define-layered-procedure-handler, 353
definition?, 244
definition-value, 244
definition-variable, 244
Definitions in Scheme, 381383. See also Internal definitions in
Scheme
Degeneracy, 4, 1214
in biological systems, 12
in engineered systems, 14
evolution and, 13
of genetic code, 12
partial information and, 14
physics and, 13
propagation and, 369
redundancy vs., 12 n
deKleer, Johan, 358 n
delay, 211
Delegate procedure in bundle, 396
Delegation, 128
del Pino, E. M., 16 n
Dependency-directed
backtracking, 315, 324, 358364, 370. See also amb: propagation
implementation combinatorial puzzles, 364367
Depth-first search, 277, 290292
derivative, 107
Derived expression types, 240242
```
```
Diamond, ball of mud vs., 87
Dictionary, 166, 170, 175
Differential equations, integrating, 6870, 256 (ex. 5.8)
Differential object, 105
Differentiation, automatic. See Automatic differentiation
Direction
on checkerboard, 55
on chessboard, 213
Directional propagator (p:), 331, 332 (fig. 7.4)
discard-argument, 33 , 33 (fig.
2.5)
disjoin*, 77 n
Dispatch. See Generic dispatch; Pattern-directed invocation
Dispatch key, 131, 136
Dispatch store, 90, 98, 125, 128, 131, 136138
Distances to stars, 329
Domain model for board game, 53
checkers, 5455, 59
Domain predicate, 74
Dotted-tail notation, 389
Doyle, Jon, 358 n
Driver loop (read-eval-print loop), 246
Dual numbers, 106 n
Dynamic binding in Scheme, 394395
e, as integral, 257 (ex. 5.8)
```
```
Edge, of graph, 209, 211
edge-value, 212
Effects. See also Assignment
in evaluator, 242243
in Scheme, 392394
Efficiency vs. flexibility, 17
Electrical circuit, 340 (ex. 7.2)
Element variable, 171
Elinson, R. P., 16 n
else in cond, 383
else-clause?, 241
Emacs, 1 n
Empty list, 387
Engineering
degeneracy and, 14
half-full glass, 18
redundancy and, 14
Environment, in evaluation, 234, 245
lexical scoping, 239, 246
procedure application, 234
Environment, in pattern matching. See Dictionary
eq?, 390
ERE (Extended Regular Expression), 38, 46 (ex. 2.10)
Ernst, M. D., 88 n
eval, 234, 375. See also g:eval; x:eval
```
```
Evaluation of expressions, 235244
lambda expressions, 239
applications, 235
assignments, 243
conditionals, 238
definitions, 243
derived expressions, 240242
quotations, 237
self-evaluating expressions, 236
sequences, 242
variables, 238
Eva Lu Ator, 44 (ex. 2.7), 277 (ex. 5.17), 294 (ex. 5.23)
Evaluator, 12. See also Evaluation of expressions; Interpreter
evolver, 70
Exclamation point in name, 393 n
execute-strict, 275
Exploratory behavior, 1417, 269271. See also Backtracking;
Generate and test; Search
Expressions in Scheme, 379
extend-arithmetic, 78
extend-generic-arithmetic!, 93
extract-dx-part, 110
factorial, 384 , 385
pattern-directed, 168
Fibonacci numbers, 129, 255
finite-part, 118
```
```
Finite part of differential object, 106
First-class object, 282, 382
Flexibility
additivity, 2
body plan, 9
brittleness vs., 1
combinators (see Combinators)
combinators vs., 83
correctness vs., 18
degeneracy, 4, 12, 370, 371
diamond vs. ball of mud, 87
efficiency vs., 17
exploratory behavior, 14, 329
generic procedures, 67
layered system, 4, 299, 356
mix-and-match parts, 3, 22, 170, 232
pattern-directed invocation (see Pattern-directed invocation)
Postel's law, 3, 19 n
program architecture, 5
propagator network, 328
redundancy, 12, 371
rule system, 157
flip-coin, 144
Floyd, Bob, 271
Fluid variable. See Parameter
```
```
Forbus, Ken, 358 n
force, 211
Formal parameters of procedure, 234, 381
declarations, 233, 250
lazy and lazy memo declarations, 253
lazy arguments, 251
optional argument, 118, 258
(ex. 5.11)
rest arguments, 248 n, 258 (ex. 5.11), 267 (ex. 5.12), 389390
restriction declarations, 257 (ex. 5.10)
Franklin, Benjamin, 183
Fredkin, Edward, 125 n
Freuder, Eugene, 332 n
Friedman, Daniel P., 254 n
Fully supported, 349
function-extender, 82
Functional programming, 394 n
Function arithmetic, 8083
Function combinators, 2329
compose, 23
curry-argument, 34
discard-argument, 33
parallel-combine, 25
permute-arguments, 35
spread-combine, 26
```
```
g:, 236 n
g:advance, 236
handlers, 254
g:apply, 245
handlers, 245246
g:eval, 235
handlers, 235244
Scheme primitives and, 238 n
g:handle-operand, 252
Games. See Adventure game; Checkers; Chess Gatewood, George D.,
334 n
Generate and test, 1417, 288, 292. See also Backtracking;
Exploratory behavior; Search
backtracking, 16
in biology, 14
in evolution, 16
generic-move!, 146
generic-procedure-constructor, 90, 97
generic-procedure-dispatch, 100 , 125
generic-symbolic, 309
generic-with-layers, 309
Generic arithmetic, 9096
automatic differentiation handlers, 107110
problems with, 94
Generic dispatch, 4, 99. See also Dispatch store
caching for, 131
```
```
chaining handlers, 137
most specific handler, 136
pattern matching vs., 157
resolution policy, 98, 130, 136
rules for, 88
trie data structure for, 125130
Generic procedures extensible, 87101
flexibility, 67
implementation, 97100
object-oriented programming and, 4, 88 n, 138152
Gerhart, John C., 9 n, 14 n
get-arity, 28
get-handler, 98
get-hunger, 143
Gilliland, R.L., 337
giuoco-piano-opening, 223
gmatch:compile-path, 226
gmatch:compile-target, 228
gmatch:compile-var, 230
Gödel, Kurt, 1 n
Golden ratio, 256
Gossip propagation, 354 (ex. 7.4)
Graph
alternate views, 216
chessboard as, 216
```
```
implementation of, 211212
lazy, 211
list as, 210
pattern matching on, 209231
propagation and, 342 (ex. 7.3)
graph-match, 225
graph-node-view, 216
Graph edge, 209, 211
Graph node, 209, 211
grep, 42
guarantee, 151 n
guarantee-list-of, 151 n
handle-cell-contradiction, 363
handle-operand. See g:handle-operand; x:handle-operand
Handler
applicability of, 73, 98
choosing efficiently, 125
for arithmetic operation, 71
for generic procedure, 88
for layered procedure, 306
term-rewriting rule consequent, 165
has-edge?, 212
Hash table, 29 n
for memoization, 132
for sticky note, 29, 254
```
```
Haskell, 22 n, 251
currying, 138 n
overloading, 154
type system, xvi Herbrand, Jacques, 1 n
Hewitt, Carl E., 170 n, 271, 370 n
Hewitt, Edwin, 106 n
Hipparchus, 336 n
Hipparcos satellite, 335, 335 n, 336 n
Hox complex (genes), 9
Hubble space telescope, 337
Hygienic macro, 167, 240 n
Hyperreal numbers, 106 n
Hypothetical premise, 356, 359364
IDE (Integrated Development Environment), 321 (ex. 6.4)
if
in evaluator, 239
in Scheme, 384
if?, 239
if-alternative, 239
if-consequent, 239
if-predicate, 239
Improper list, 248 n
in (believed), 349
Indentation in Scheme, 382 n
Index
```
```
of this book, 409
trie, 125
zero-based, 388
infer-program-types, 194, 196
infinitesimal-part, 118
Infinitesimal part of differential object, 106
Infix notation, 250 (ex. 5.7)
Inheritance
delegation vs., 128
object-oriented programming, 140
inquire in propagator, 334
install-arithmetic!, 72
Integrated Development Environment (IDE), 321 (ex. 6.4)
Integrating differential equations, 6870, 256 (ex. 5.8)
Internal definitions in Scheme, 24, 383, 385
Interpreter, 233254
Intervals
in measurements, 332336
merging, 352
invert-address, 219
iota, 112 n
Iteration in Scheme, 385
Java, 1 n, 6, 22 n
chaining, 146
combinators, 65
```
```
interfaces, 6 n
Jonge, Joost Kiewiet de, 334 n
Justification, annotation of, 322
Kahn, Louis Isadore, 5
Kanizsa, Gaetano, 328
Kanizsa's triangle illusion, 328, 328 (fig. 7.1)
Kirschner, Marc W., 9 n, 14 n
Knuth, Donald E., 409
Kowalski, Robert M., 271
Kutsia, Temur, 203 n
lambda
'.' or symbol for rest parameters, 248 n, 267 (ex. 5.12), 389
in evaluator, 239
in Scheme, 380
lambda (λ) calculus, 1 n
lambda?, 239
lambda-body, 239
lambda-parameters, 239
layer-accessor, 305
layered-datum, 303
layered-extender, 310
Layered arithmetic, 309310
Layered data, 302305
```
Layered procedure, 301, 305309, 352
```
Layering, 4, 299. See also Architecture: of programs
declarations, 299, 321 (ex. 6.4)
program architecture, 5
Layers
annotation layer, 304
base layer, 303
justification layer, 322
support layer, 317
units layer, 304
Lazy arguments, 251. See also Postponed evaluation
lazy and lazy memo declarations, 253
Lazy graph, 211
Lazy list (stream), 211, 254256
integration using, 256 (ex. 5.8)
Lem E. Tweakit, 277 (ex. 5.17)
let
in evaluator, 241
in Scheme, 384
let?, 242
let*, 385
let-body, 242
let-bound-values, 242
let-bound-variables, 242
let-cells, 330
let->combination, 242
```
```
let-values, 31 n
Lexical scoping, 239, 245, 246, 382
Lieberherr, Karl, 358 n
Lisp, xvi, 235, 387 n
Perlis quip, 17
list, 386
list?, 386
list->graph, 211
list->lazy-graph, 211
list-ref, 388
list-set!, 393
Lists
as graphs, 210
improper, 248 n
in pattern matching, 158
in Scheme, 386389, 393
lazy (streams), 211, 254256, 256 (ex. 5.8)
printing, 72 n
literal-function, 83
Literal symbol in Scheme, 390391
Local names in Scheme, 384385
Local state, 393
object-oriented programming and, 138
Logic puzzles. See Combinatorial puzzles
lookup-variable-value, 238
```
```
Loops in Scheme, 385
Louis Reasoner, 44 (ex. 2.7), 277 (ex. 5.17)
lset library, 320
Macro, 240 n, 264
hygienic, 167
syntactic closure, 167
syntax rules, 288, 295 (ex. 5.25)
Magnitudes of stars, 336
make-annotation-layer, 304
make-arithmetic, 74
make-begin, 242
make-cached-chaining-dispatch-store, 138
make-cached-most-specific-dispatch-store, 138
make-cell, 344
make-chaining-dispatch-store, 137
make-chess-board, 217
make-chess-board-internal, 218
make-generic-arithmetic, 90
make-graph-edge, 212
make-graph-node, 212
make-if, 239
make-infinitesimal, 116
make-lambda, 240
make-layered-datum, 303
make-layered-procedure, 306
```
```
make-most-specific-dispatch-store, 137
make-operation, 74
make-parameter, 395
make-pattern-operator, 169
make-property, 142, 150, 151
make-rule, 166
make-simple-dispatch-store, 90, 98
make-type, 142, 150, 152
Manzyuk, Oleksandr, 121 n
map, 249 (ex. 5.5)
match-args, 108
match:bindings, 175
match:compile-pattern, 179
match:dict-substitution, 186
match:element, 171, 180
match:element-var?, 178
match:eqv, 171
match:extend-dict, 176
match:list, 174
match:lookup, 176
match:new-dict, 175
match:segment, 173
match:segment-var?, 178
match:var?, 178
```
Matcher. *See* Match procedure Match procedure, 166, 170
```
Matrix arithmetic, 102 (ex. 3.6), 103 (ex. 3.7)
Maximal factor, 117
maybe-grab-segment, 205
maybe-set!, 276, 295 (ex. 5.25)
maybe-substitute, 191
Mayer, Meinhard E., 114 n
McAllester, David, 358 n
McCarthy, John, 271, 277 n
MDL, 249 (ex. 5.6)
Memoization
hash table for, 132
lazy evaluation and, 251 n
merge, 351
merge-intervals, 352
merge-value-sets, 353
Message-accepting procedure, 396
Metaobject Protocol, 88 n
Method. See Handler; Message-accepting procedure
MIT/GNU Scheme, 379
Mitros, Piotr, 11 n
Mix-and-match parts, 3, 7 n, 22. See also Combinators
Moses, Joel, 87 n
most-specific-generic-procedure, 138
Mud, ball of, 87
Multiple values in Scheme, 3032
```
```
n:, 69 n
Naming conventions
! for assignment, 393 n
? for predicate, 386 n
%, 152
narrate!, 144
n-ary procedure (indefinite number of arguments), 29, 72 n, 248
(ex. 5.2), 258 (ex. 5.11), 267 (ex. 5.12), 389390
Neighbor in propagator, 342
Nested definition in Scheme. See Internal definitions in Scheme
.net, 1 n
Newton's method, 104
next-turn, 219
Node, of graph, 209, 211
node-at, 218
Nogood set, 358
Nondeterministic choice. See amb
Non-strict argument, 250. See also Postponed evaluation
Non-strict procedure, 250
Normal order, 236, 245
nothing?, 343
null?, 387
number?, 237
*number-of-calls-to-fail*, 289
Numbers in Scheme, 237
```
Numeral, 379. *See also* Rational constant
```
numeric-arithmetic, 75
Numerical integration, 6870, 256 (ex. 5.8)
Object-oriented programming generic procedures and, 4, 88 n, 138
152
inheritance, 140
local state and, 138
modeling with, 138
ODE integrator, 6870
Offset on checkerboard, 55
operands, 236
Operands of combination, 234, 380
order of evaluation, 246
operation-applicability, 74
operation-union, 78
operation-union-dispatch, 78
operator, 236
Operator of combination, 234, 380
Optical illusion, 328, 328 (fig.
7.1)
Optional argument, 118
optional declarations, 258 (ex. 5.11)
out (not believed), 349
Overloading, 7173, 154
override-rule!, 170
```
```
p:, 332 (fig. 7.4)
p:amb, 357, 363, 364
pair?, 387
Pairs in Scheme, 387, 393
parallel-combine, 25 (fig. 2.2), 26
Parameter (fluid variable), 395
Parameter (of procedure). See Formal parameters of procedure
parameterize, 395
Parametric types, 202 (ex. 4.15)
Paranoid programming, 28, 65, 321 (ex. 6.3)
Parentheses in Scheme, 380, 387
Parti , 5, 299
partial (derivative), 111
Partial information, 4, 130, 157
degeneracy and, 14
propagation, 344
type inference, 193201
unification, 183, 185
Pattern, 157
partial information, 157, 183
rules and, 157, 160
Pattern-directed invocation, 158, 168170, 370 n
- (negation or subtraction), 168
factorial, 168
Pattern matching, 157. See also Pattern-directed invocation;
Unification
```
```
combinators for, 170, 175
equality testing vs., 157, 183
generic dispatch vs., 157
on graphs, 209231
on lists, 158
term rewriting, 160167
Pattern variable, 157, 158. See also Segment variable
in graph matching, 213, 215
restrictions, 163
Perlis, Alan J., 17, 150, 159
Perlmutter, Barak A., 121 n
permute-arguments, 35 (fig. 2.7), 36
Perturbational programming, 323
π (pi), 381
piece-at, 221
piece-in, 221
PLANNER
backtracking, 271
pattern-directed invocation, 370 n
populate-sides, 220
possible-directions, 55
Postel, Jonathan Bruce, 3
Postel's law, 3, 19 n
Postponed evaluation, 236. See also delay; force; Stream
compound propagator, 347
```
```
lazy graph, 211
non-strict arguments, 253254, 266
pp (pretty-print), 72 n
predicate?, 133
predicate-constructor, 135
Predicate as type, 132138
for argument checking, 151 n
as dispatch key, 136
for formal parameter, 257 (ex. 5.10)
in pattern variable, 162, 179
Predicate in conditional, 383, 384
Predicates, 386 n. See also Predicate as type
? naming convention, 386 n
abstract predicate, 134
domain predicate, 74
for procedure applicability, 73, 98
registration of, 133
relationships between, 135, 155
Premise, 315
belief status, 349
hypothetical, 356, 359364
premise-nogoods, 359
Pretty-print (pp), 72 n
Prime number test, 134
primitive-propagator, 347
```
```
Primitive procedure, 245
print-all-results, 173
Printing list structure, 72 n
Procedure
application of, 235, 244246
lambda expression for, 380 (see also lambda)
layered, 301, 305309, 352
match procedure, 166, 170
message-accepting, 396
with multiple values, 3032
n-ary (see n-ary procedure)
with non-strict arguments, 250256
non-strict, 250
primitive, 245
strict, 245, 250
variadic (see n-ary procedure)
with indefinite number of arguments (see n-ary procedure)
procedure-parameter-name, 252
program-constraints, 199
Programming
additive, 15
architecture of, 56
layered, 299
Prolog
backtracking, 271
```
```
occurs check, 191 n
pattern-directed invocation, 370 n
segment variables, 203 n
Propagation
activation policy, 347
alternative world views, 349351
amb, 355364
astronomy example, 329340
cell, 342, 343346
circuit example, 340 (ex. 7.2)
degeneracy and, 369
graph example, 342 (ex. 7.3)
mechanism, 342349
merging values, 351354
model of computation, 327329
neighbor, 342
partial information, 344
propagator, 342, 346349 (see also Propagator)
scheduler, 342, 343
searching alternatives, 355364
type inference, 368 (ex. 7.8)
unification and, 354 (ex. 7.4)
wiring diagram vs. expression, 327, 331 (fig. 7.3), 337 n, 340 (ex.
7.1), 367 (ex. 7.6), 369
Propagator, 342, 346349
choice propagator (see Choice propagator)
```
```
constraint propagator (c:), 330, 331 (fig. 7.3)
directional propagator (p:), 331, 332 (fig. 7.4)
input and output cells, 343
propagator, 346
property-getter, 145
Property list, 303
Provenance, 299, 315, 322, 328, 333
Puzzles (combinatorial), 277 (ex. 5.17), 364367
Pythagorean triples, 272, 293 (ex. 5.22), 357
Python, 6, 14 n
generic arithmetic, 87
Quasiquotation in Scheme, 391
Question mark. See ?
Quotation
in evaluator, 237
in Scheme, 390391
quote, 237
quoted?, 237
Radio receiver, 10
Radul, Alexey Andreyevich, 121 n, 344 n, 358 n, 370
random-bias, 143
random-choice, 143
random-number, 144
Randomness. See flip-coin; random-...
```
```
Rational constant, 47, 379
Read-eval-print loop (repl), 246
Records in Scheme, 151, 386389, 394
record type declaration, 388
Recursive procedures, 384
reduce-right, 263
Redundancy, 1214, 130
in biological systems, 12
degeneracy vs., 12 n
in engineered systems, 14
ref-stream, 255
Referee for game, 53, 210
Registration of predicate, 133
Regular expressions, 3738
combinator implementation, 3843
Relationships between predicates, 135, 155
repl, 246
require, 272, 292
Resolution policy for generic dispatch, 98, 130, 136
Rest parameter, 248 n, 267 (ex. 5.12), 390
rest declarations, 258 (ex. 5.11)
restrict-arity, 28
Restrictions
on formal parameters, 257 (ex. 5.10)
on pattern variables, 163
```
```
restrict-to declarations, 258
(ex. 5.10)
result-receiver, 170
retract! in propagator, 335, 349
Returning multiple values in Scheme, 3032
Robinson, John Alan, 183
rotate-180-view, 216
Roussel, Phillipe, 271
Ruby and continuations, 282
rule, 167
rule-simplifier, 161, 165
Rules
algebra, 161163
backtracking and, 162, 164
for generic procedure dispatch, 88
patterns and, 157, 160
Run time, 259
Russell, Jane L., 334
Sandewall, Erik, 271 n
Satellite, Hipparcos, 335, 335 n, 336 n
SAT solver, 358 n, 368
say!, 148
Scheduler for propagation, 342, 343
Scheme, xvi, 244, 379395
MIT/GNU Scheme, 379
```
```
Schönfinkel, Moses, 34 n
scmutils, 101
Scope, 381 n. See also Lexical scoping
Search, 355356. See also amb; Backtracking; Exploratory behavior;
Generate and test
depth-first and breadth-first, 277, 290292
Segment variable, 159. See also Pattern variable
in algebra rules, 162
backtracking and, 172
unification and, 203208
Selectors in Scheme, 386
self-evaluating?, 237
Semicolon (;). See also Syntactic sugar
comment introduced by, 390
Sensitivity analysis, 323
sequence->begin, 240
set!
in evaluator, 243
in Scheme, 393
set-car!, 393
set-cdr!, 393
set-piece-at, 221
set-predicate<=!, 136
setup-propagator-system, 366
SI (International System of Units), 314 (ex. 6.1)
SICP, 379
```
```
inhabitants, 44 (ex. 2.7), 277 (ex. 5.17), 294 (ex. 5.23)
simple-abstract-predicate, 134
simple-generic-procedure, 89, 89 , 97
simple-move, 222
simple-operation, 74
Simplification, algebraic, 161163
Siskind, Jeffrey Mark, 121 n
Smalltalk
continuations, 282
currying, 138 n
message passing, 396 n
Smith, Brian Cantwell, 237 n
SML and continuations, 282
Snark hunt, 285 (ex. 5.21)
Software support for book, 377
SOS, 88 n
Special form, 235, 380
implemented by macro, 264
in evaluator, 237244
spread-apply, 32
spread-combine, 27 (fig. 2.3), 28 , 31 , 31 (fig. 2.4)
square, 381
Stallman, Richard Matthew, 332 n, 358 n
Standards, 46 (ex. 2.10)
Stars
```
```
distances to, 329
magnitudes of, 336
start-chess-game, 220
Steele, Guy Lewis Jr., 30 n, 332 n, 358 n
Sticky note
hash table for, 29, 254
for metadata, 169
stormer-2, 69
Stormer's integrator, 68
Stream (lazy list), 211, 254256
integration using, 256 (ex. 5.8)
Strict argument, 251
Strict procedure, 245, 250
strongest-consequence, 351
strongest-value, 350
Struve, Friedrich G. W. von, 332
Suppes, Patrick, 322 n
support-layer, 318
support-layer-value, 318
support-set abstraction (...support-set...), 319
Support for datum, 316
Support layer, 317
Support set, 315
Sussman, Gerald Jay, 106 n, 114 n, 332 n, 358 n, 370
Symbol, in Scheme, 238 n, 390391
```
```
symbolic-extender, 76
Symbolic arithmetic, 7173
symmetrize-move, 214
Syntactic sugar, 159, 315 (ex. 6.1)
define as, 382
derived expression types, 240242
Syntax. See Combination; Macro; Special form; Syntactic
sugar
Tag, for predicate, 131, 133, 136
tagged-list?, 238
Tagged data, 134, 155
take-thing, 147
Tannenbaum, Andrew S., 46 (ex. 2.10)
tell! in adventure game, 147
tell! in propagator, 333
Term rewriting, 160167
for algebraic simplification, 161163
for compiler optimization, 160, 168
equational theories, 160
pattern matching, 160167
test-content!, 344 , 345
text-of-quotation, 237
the-contradiction, 345
the-nothing, 343, 344
the-unspecified-value, 239
```
```
Thunk, 253 n
tinyCLOS, 88 n
Trie data structure, for generic dispatch, 125130
Troll, 139, 142144
Truth-maintenance system, 358 n
try-rules, 165
TTL mix-and-match parts, 7 n
Turing, Alan, 1 n
Turn in chess
labeling edge to piece, 220, 221
next-turn, 219
turn state variable, 218
type-instantiator, 142, 150, 152
type-properties, 152
Typed expression, 194
Type inference, 193201
inferred declaration, 195
propagation for, 368 (ex. 7.8)
unification for, 196, 200
Types. See also Predicate as type in adventure game, 142145, 150
152
parametric, 202 (ex. 4.15)
union, 202 (ex. 4.16)
user-defined, 132138
Unbound variable, 238, 247 (ex. 5.1)
```
```
Unification, 157, 183184
as equation solving, 185
partial information and, 183, 185
propagation and, 354 (ex. 7.4)
segment variables and, 203208
substitution instance, 183
type inference and, 193201
unifier, 183
unifier, 186
unify, 186
unify-constraints, 200
unify:internal, 187
Union types, 202 (ex. 4.16)
unit, 311
unit-arithmetic, 312
unit-layer, 304
Units (of measurement), 4748
arithmetic with, 310314
base vs. derived units, 310 n
SI (International System of Units), 314 (ex. 6.1)
units layer, 304
wrappers for, 4952
UNIX and streams, 297
User-defined types, 132138
```
```
Value set, 350
merging, 353
Variable, 381. See also Pattern variable; Segment variable
in evaluator, 238
variable?, 238
Variadic procedure. See n-ary procedure
vector, 388
vector?, 388
vector-ref, 388
vector-set!, 393
Vector arithmetic, 85 (ex. 3.2), 102 (ex. 3.6), 103 (ex. 3.7)
Vectors and covectors, 112, 113 (ex. 3.10)
Vectors in Scheme, 386389, 393
Vectors of procedures, 248 (ex. 5.3)
Waltz, David L., 332 n
Waltz algorithm, 342 (ex. 7.3)
Warren, David, 271
Website for book software, 377
Wengert, Robert Edwin, 103 n
white-move?, 218
Whitespace in Scheme, 382 n
Wilde, Oscar (Perlis's paraphrase of), 17
Wiring diagram. See Propagation: wiring diagram
Wisdom, Jack, 104 n, 114 n
Wise, David S., 254 n
```
```
with-breadth-first-schedule, 290
with-depth-first-schedule, 290
Wrappers, 4652
specializers, 49
units of measurement and, 4952
write-line, 392 n
x:, 260 n
x:advance, 261
handlers, 267
x:analyze, 260
handlers, 261264
```
x:apply, *265* handlers, 265266 x:eval, *259* x:handle-operand, *266*
Zabih, Ramin, 358 *n* Zero-based indexing, 388 Zuras, Dan, 106 *n*
# **List of Exercises**
| 2.1 | 2.4 | 2.7 | 2.10 | 2.13 |
|-----|------|------|------|------|
| 29 | 36 | 44 | 46 | 64 |
| 2.2 | 2.5 | 2.8 | 2.11 | 2.14 |
| 29 | 37 | 45 | 52 | 64 |
| 2.3 | 2.6 | 2.9 | 2.12 | |
| 32 | 43 | 46 | 64 | |
| | | | | |
| 3.1 | 3.6 | 3.11 | 3.16 | 3.21 |
| 84 | 102 | 123 | 153 | 153 |
| 3.2 | 3.7 | 3.12 | 3.17 | 3.22 |
| 85 | 103 | 124 | 153 | 154 |
| 3.3 | 3.8 | 3.13 | 3.18 | |
| 86 | 113 | 129 | 153 | |
| 3.4 | 3.9 | 3.14 | 3.19 | |
| 101 | 113 | 130 | 153 | |
| 3.5 | 3.10 | 3.15 | 3.20 | |
| 101 | 113 | 132 | 153 | |
| | | | | |
| 4.1 | 4.6 | 4.11 | 4.16 | 4.21 |
| 162 | 180 | 193 | 202 | 209 |
| 4.2 | 4.7 | 4.12 | 4.17 | 4.22 |
| 163 | 181 | 193 | 202 | 213 |
| 4.3 | 4.8 | 4.13 | 4.18 | 4.23 |
| 164 | 182 | 193 | 202 | 216 |
| 4.4 | 4.9 | 4.14 | 4.19 | 4.24 |
| 164 | 182 | 201 | 208 | 225 |
| 4.5 | 4.10 | 4.15 | 4.20 | 4.25 |
| 179 | 193 | 202 | 209 | 231 |
| | | | | |
| 5.1 | 5.7 | 5.13 | 5.19 | 5.25 |
| 247 | 250 | 268 | 278 | 295 |
| 5.2 | 5.8 | 5.14 | 5.20 | 5.26 |
| 248 | 256 | 268 | 279 | 295 |
| 5.3 | 5.9 | 5.15 | 5.21 | |
| 248 | 257 | 269 | 285 | |
| 5.4 | 5.10 | 5.16 | 5.22 | |
| 249 | 257 | 269 | 293 | |
| 5.5 | 5.11 | 5.17 | 5.23 | |
| 249 | 258 | 277 | 294 | |
| 5.6 | 5.12 | 5.18 | 5.24 | |
| 249 | 267 | 278 | 294 | |
| | | | | |
| 6.1 | 6.2 | 6.3 | 6.4 | 6.5 |
| 314 | 320 | 321 | 321 | 323 |
| | | | | |
| 7.1 | 7.3 | 7.5 | 7.7 | |
| 340 | 342 | 367 | 368 | |
| 7.2 | 7.4 | 7.6 | 7.8 | |
| 340 | 354 | 367 | 368 | |