You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: shared/middle/sicp.md
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -97,24 +97,24 @@ This fundamental work emphasizes controlling the complexity of software systems
97
97
* What is the type tag? When can it be useful?
98
98
* When are tags for abstract data stripped off and when are attached?
99
99
* What is the dispatching on type? Why isn't this approach additive?
100
-
* What is the data-directed programming? Why does this approach require the global mutable table?
100
+
* What is the data-directed programming?
101
101
* Why does data-directed approach help us to avoid procedure names conflict?
102
-
* How does apply-generic from this chapter work?
102
+
* How does `apply-generic` function from this chapter work?
103
103
* What is the message-passing approach?
104
104
* Compare "dispatching on type", "data-directed" and "message-passing" approaches.
105
105
106
106
*[2.5 Systems with Generic Operations](http://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-18.html#%_sec_2.5)
107
107
108
108
* Can you explain the idea of Generic Operations?
109
109
* Why are two-level tags used in the example of the generic arithmetic operations package?
110
-
*Why is implementing each procedure for each possible type combination cumbersome?
110
+
*What is a problem with implementing procedures for all possible combinations of types?
111
111
* When such approach is the best way to create generic operations?
112
112
* What is the coercion?
113
113
* What are a hierarchy of types, a subtype and a supertype?
114
-
*Why tower of types is the simplest case of the hierarchies of types?
115
-
* How can procedures raising help in cross-type generic operations?
116
-
* Why coercing through raising become hard for types with multiple supertypes?
117
-
* How can we determine that we can safely coerce to lower type?
114
+
*What advantage does a tower of types have as a particular case of hierarchies of types for implementing generic operations?
115
+
* How can type raising help in cross-type generic operations?
116
+
* Why does coercing through raising become hard for types with multiple supertypes?
117
+
* How can we determine that we can safely coerce to a lower type?
118
118
119
119
* Chapter questions:
120
120
@@ -175,13 +175,13 @@ This fundamental work emphasizes controlling the complexity of software systems
175
175
* What is the shared state? How it can be done? What problems can appear because of shared state?
176
176
* Explain all possible interleaving the order of events for two processes when first one executes the expression: `balance += 10;` and the second one: `balance *= 2;`?
177
177
* Will problems with concurrency be the same if we have no assignment in the language (only immutable data)?
178
-
* Why do assignments in the language force programmer to admit time in modeling?
178
+
* Why do assignments in the language force programmer to allow for time in modeling?
179
179
* What does serialization mean and what is its purpose?
180
180
* Why serialization doesn't help for such an operation like swapping the balances in two bank accounts?
181
181
* What is the mutex? How does it help with problems arisen because of concurrency?
182
182
* How does mutex can be implemented?
183
183
* Which operations in mutex implementation should be done atomically? Why?
184
-
* Which situations are called deadlock? What are the ways to avoid deadlocks?
184
+
* Which situations are called deadlocks? What are the ways to avoid deadlocks?
185
185
* Why does communication between processes matter for shared state or ordering of events?
0 commit comments