Skip to content

Commit ba361c3

Browse files
authored
Merge pull request #358 from fullstack-development/sicp-generic-operations-fixes
SICP: fixing questions in generic operations
2 parents 3f2c636 + 73d9f7b commit ba361c3

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

shared/middle/sicp.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -97,24 +97,24 @@ This fundamental work emphasizes controlling the complexity of software systems
9797
* What is the type tag? When can it be useful?
9898
* When are tags for abstract data stripped off and when are attached?
9999
* 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?
101101
* 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?
103103
* What is the message-passing approach?
104104
* Compare "dispatching on type", "data-directed" and "message-passing" approaches.
105105

106106
* [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)
107107

108108
* Can you explain the idea of Generic Operations?
109109
* 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?
111111
* When such approach is the best way to create generic operations?
112112
* What is the coercion?
113113
* 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?
118118

119119
* Chapter questions:
120120

@@ -175,13 +175,13 @@ This fundamental work emphasizes controlling the complexity of software systems
175175
* What is the shared state? How it can be done? What problems can appear because of shared state?
176176
* 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;`?
177177
* 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?
179179
* What does serialization mean and what is its purpose?
180180
* Why serialization doesn't help for such an operation like swapping the balances in two bank accounts?
181181
* What is the mutex? How does it help with problems arisen because of concurrency?
182182
* How does mutex can be implemented?
183183
* 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?
185185
* Why does communication between processes matter for shared state or ordering of events?
186186

187187
* [3.5 Streams](http://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-24.html#%_sec_3.5)

0 commit comments

Comments
 (0)