(sarabander.github.io) Structure and Interpretation of Computer Programs, 2e: Top

ROAM_REFS: https://sarabander.github.io/sicp/html/index.xhtml

Main node: (sarabander.github.io) Structure and Interpretation of Computer Programs, 2e.

Unofficial Texinfo Format 2.andresraba6.6

Harold Abelson and Gerald Jay Sussman with Julie Sussman, foreword by Alan J. Perlis

(sarabander.github.io) SICP, 2e: Chapter 1 Building Abstractions with Procedures

ROAM_REFS: https://sarabander.github.io/sicp/html/Chapter-1.xhtml

(sarabander.github.io) SICP, 2e: 1.1 The Elements of Programming

ROAM_REFS: https://sarabander.github.io/sicp/html/1_002e1.xhtml

(sarabander.github.io) SICP, 2e: 1.2 Procedures and the Processes They Generate

ROAM_REFS: https://sarabander.github.io/sicp/html/1_002e2.xhtml

(sarabander.github.io) SICP, 2e: 1.3 Formulating Abstractions with Higher-Order Procedures

ROAM_REFS: https://sarabander.github.io/sicp/html/1_002e3.xhtml

(sarabander.github.io) SICP, 2e: Chapter 2 Building Abstractions with Data

ROAM_REFS: https://sarabander.github.io/sicp/html/Chapter-2.xhtml

(sarabander.github.io) SICP, 2e: 2.1 Introduction to Data Abstraction

ROAM_REFS: https://sarabander.github.io/sicp/html/2_002e1.xhtml

(sarabander.github.io) SICP, 2e: 2.2 Hierarchical Data and the Closure Property

ROAM_REFS: https://sarabander.github.io/sicp/html/2_002e2.xhtml

(sarabander.github.io) SICP, 2e: 2.2, Footnote 72

ROAM_REFS: https://sarabander.github.io/sicp/html/2_002e2.xhtml#FOOT72

^{72} The use of the word “closure” here comes from abstract algebra, where a set of elements is said to be closed under an operation if applying the operation to elements in the set produces an element that is again an element of the set. The Lisp community also (unfortunately) uses the word “closure” to describe a totally unrelated concept: A closure is an implementation technique for representing procedures with free variables. We do not use the word “closure” in this second sense in this book.

(sarabander.github.io) SICP, 2e: 2.3 Symbolic Data

ROAM_REFS: https://sarabander.github.io/sicp/html/2_002e3.xhtml

(sarabander.github.io) SICP, 2e: 2.4 Multiple Representations for Abstract Data

ROAM_REFS: https://sarabander.github.io/sicp/html/2_002e4.xhtml

(sarabander.github.io) SICP, 2e: 2.5 Systems with Generic Operations

ROAM_REFS: https://sarabander.github.io/sicp/html/2_002e5.xhtml

(sarabander.github.io) SICP, 2e: 2.5, Footnote 118

ROAM_REFS: https://sarabander.github.io/sicp/html/2_002e5.xhtml#FOOT118

This statement, which also appears in the first edition of this book, is just as true now as it was when we wrote it twelve years ago. Developing a useful, general framework for expressing the relations among different types of entities (what philosophers call “ontology”) seems intractably difficult. The main difference between the confusion that existed ten years ago and the confusion that exists now is that now a variety of inadequate ontological theories have been embodied in a plethora of correspondingly inadequate programming languages. For example, much of the complexity of object-oriented programming languages—and the subtle and confusing differences among contemporary object-oriented languages—centers on the treatment of generic operations on interrelated types. Our own discussion of computational objects in Chapter 3 avoids these issues entirely. Readers familiar with object-oriented programming will notice that we have much to say in chapter 3 about local state, but we do not even mention “classes” or “inheritance.” In fact, we suspect that these problems cannot be adequately addressed in terms of computer-language design alone, without also drawing on work in knowledge representation and automated reasoning.

(sarabander.github.io) SICP, 2e: Chapter 3 Modularity, Objects, and State

ROAM_REFS: https://sarabander.github.io/sicp/html/Chapter-3.xhtml

(sarabander.github.io) SICP, 2e: 3.1 Assignment and Local State

ROAM_REFS: https://sarabander.github.io/sicp/html/3_002e1.xhtml

(sarabander.github.io) SICP, 2e: 3.2 The Environment Model of Evaluation

ROAM_REFS: https://sarabander.github.io/sicp/html/3_002e2.xhtml

(sarabander.github.io) SICP, 2e: 3.3 Modeling with Mutable Data

ROAM_REFS: https://sarabander.github.io/sicp/html/3_002e3.xhtml

(sarabander.github.io) SICP, 2e: 3.3, Footnote 148

ROAM_REFS: https://sarabander.github.io/sicp/html/3_002e3.xhtml#FOOT148

The subtleties of dealing with sharing of mutable data objects reflect the underlying issues of “sameness” and “change” that were raised in 3.1.3. We mentioned there that admitting change to our language requires that a compound object must have an “identity” that is something different from the pieces from which it is composed. In Lisp, we consider this “identity” to be the quality that is tested by

eq?
, i.e., by equality of pointers. Since in most Lisp implementations a pointer is essentially a memory address, we are “solving the problem” of defining the identity of objects by stipulating that a data object “itself” is the information stored in some particular set of memory locations in the computer. This suffices for simple Lisp programs, but is hardly a general way to resolve the issue of “sameness” in computational models.

(sarabander.github.io) SICP, 2e: 3.4 Concurrency: Time Is of the Essence

ROAM_REFS: https://sarabander.github.io/sicp/html/3_002e4.xhtml

(sarabander.github.io) SICP, 2e: 3.5 Streams

ROAM_REFS: https://sarabander.github.io/sicp/html/3_002e5.xhtml

(sarabander.github.io) SICP, 2e: Chapter 4 Metalinguistic Abstraction

ROAM_REFS: https://sarabander.github.io/sicp/html/Chapter-4.xhtml

(sarabander.github.io) SICP, 2e: 4.1 The Metacircular Evaluator

ROAM_REFS: https://sarabander.github.io/sicp/html/4_002e1.xhtml

(sarabander.github.io) SICP, 2e: 4.2 Variations on a Scheme — Lazy Evaluation

ROAM_REFS: https://sarabander.github.io/sicp/html/4_002e2.xhtml

(sarabander.github.io) SICP, 2e: 4.3 Variations on a Scheme — Nondeterministic Computing

ROAM_REFS: https://sarabander.github.io/sicp/html/4_002e3.xhtml

(sarabander.github.io) SICP, 2e: 4.4 Logic Programming

ROAM_REFS: https://sarabander.github.io/sicp/html/4_002e4.xhtml

(sarabander.github.io) SICP, 2e: Chapter 5 Computing with Register Machines

ROAM_REFS: https://sarabander.github.io/sicp/html/Chapter-5.xhtml

(sarabander.github.io) SICP, 2e: 5.1 Designing Register Machines

ROAM_REFS: https://sarabander.github.io/sicp/html/5_002e1.xhtml

(sarabander.github.io) SICP, 2e: 5.2 A Register-Machine Simulator

ROAM_REFS: https://sarabander.github.io/sicp/html/5_002e2.xhtml

(sarabander.github.io) SICP, 2e: 5.3 Storage Allocation and Garbage Collection

ROAM_REFS: https://sarabander.github.io/sicp/html/5_002e3.xhtml

(sarabander.github.io) SICP, 2e: 5.4 The Explicit-Control Evaluator

ROAM_REFS: https://sarabander.github.io/sicp/html/5_002e4.xhtml

(sarabander.github.io) SICP, 2e: 5.5 Compilation

ROAM_REFS: https://sarabander.github.io/sicp/html/5_002e5.xhtml

(sarabander.github.io) SICP, 2e: References

ROAM_REFS: https://sarabander.github.io/sicp/html/References.xhtml

(sarabander.github.io) SICP, 2e: Term Index

ROAM_REFS: https://sarabander.github.io/sicp/html/Term-Index.xhtml

** Term 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)

Local Graph

org-roam 69d3e2e7-62dc-414f-90ee-86f4b4abbcb0 (sarabander.github.io) Structure and ... 2b674c22-8ea8-4da1-b374-2aa2990e9293 (sarabander.github.io) Structure and ... 69d3e2e7-62dc-414f-90ee-86f4b4abbcb0->2b674c22-8ea8-4da1-b374-2aa2990e9293 2b674c22-8ea8-4da1-b374-2aa2990e9293->69d3e2e7-62dc-414f-90ee-86f4b4abbcb0