Errata are sorted by finder. You can also find them sorted by page number or by date.
| Finder | Description |
|---|---|
| Alex Bai |
Page 322: In Exercise 2a, the type of
but the correct type is |
| Roger Burtonpatel | Page 491: The evaluation judgment has the wrong form. See erratum for page 492. (Found on February 15, 2024.) |
| Roger Burtonpatel |
Page 492: The operational semantics of μML (Chapter 8) uses the same evaluation judgment as μScheme (Chapter 2): ⟨e,ρ,σ⟩⇓v. But μML does not have mutable variables, so by rights it should use the same evaluation judgment as nano-ML (Chapter 5): ⟨e,ρ⟩⇓v. The judgment forms used in rules CaseScrutinee, CaseMatch, and CaseFail should be updated to use the correct judgment form. And the second premise of CaseMatch should read
Nothing else needs to change. (The error was caused by using the wrong definition for the LaTeX
macro |
| Will Cordray |
Page 22: In the last bullet point on page 22, the code
snippet (define f (x_1 ... x_n) e) has the e
in the typewriter font. It should be in math font. (Found on January 16,
2025.)
|
| Mert Erden |
Page 458: The definition of null? shown on
page 458 swaps #t and #f. The faulty
definition is actually overwritten by a second definition on page 475
(chunk 475a), which is correct. (Found on November 1, 2022.)
|
| Andrew Fisher and Milod Kazerounian |
Page S407: In Typed μScheme, as a result of a
copy/paste error, the predefined function
(Found on March 13, 2024.)
|
| Matthew Fluet |
Page S572: In μSmalltalk, when
check-expect test fails, the error message says that two
values are not “similar.” The message should say that they do not test
as “=.” (Found on March 24, 2023.)
|
| Matthew Fluet |
Page S573: When a μSmalltalk expression is printed, say
as part of an error message, a nullary block is incorrectly rendered as
[…]. It should be rendered as {…}. (Found on
March 24, 2023.)
|
| JoshuaB47@github | Page 20: The last bullet point of Figure 1.2(a) on page 20 ends with “we apply it as described Section 1.2.4 (page 23).” It should read “we apply it as described in Section 1.2.4 (page 23).” (emphasis added) (Found on May 2, 2025.) |
| Raghavendra Nyshadham | Page 12: Immediately following code chunk 12a, the colon between “interpreter’s response” and the reference mark of footnote 1 should be replaced with a period. (Found on November 17, 2022.) |
| Raghavendra Nyshadham |
Page 23: In code chunk 23a, the interpreter’s response
after (val x 4) has been elided. This is the first of many
elided responses, but it should have been signposted. (Found on November
26, 2022.)
|
| Raghavendra Nyshadham |
Page 28: In the line following code chunk 28, strike
the second “this”: in “This description is worth comparing
|
| Norman Ramsey |
Page S222: The type of the continuation given to
>>=+ is misstated as 'a -> b error.
It should be 'a -> 'b error. (Found on October 27,
2022.)
|
| Norman Ramsey |
Page S410: In Typed uScheme, function
The corrected code reads as follows:
(Found on November 3, 2022.)
|
| Norman Ramsey |
Page 164: Just before the section head for 2.13.3, the
second equation for desugaring cond is missing a closing
bracket.The left-hand side should read “(cond [eqea] ⋯).” (Found on September 30, 2023.) |
| Daniel Scherzer |
Page 382: When applied to an empty list, primitives
The corrected code reads as follows:
(Found on October 27, 2022.)
|
| Daniel Scherzer |
Page S440: The sentence introducing
asFuntype begins with the word “Functions.” It should be
singular. (Found on September 17, 2025.)
|
| Richard Townsend | Page 366: “Has the form of a lambda” is meant to be a syntactic restriction, not a premise in the typing rule. (Found on March 16, 2023.) |
| Richard Townsend and Milod Kazerounian |
Page 439: As noted in the text, the code doesn’t
check the condition θΓ = Γ. A second,
similar shortcut could have been taken by not passing ftv(Γ) to FAQ: One could ask why those rules mess with Γ at all, given that we know a
top-level Γ is empty. The side
conditions and the parameter are needed to ensure soundness of each rule
using purely local reasoning. The fact that a top-level Γ has these other properties is an
emergent property of the rules system as a whole, the proof of which
warrants a homework exercise (Exercise 10). And an emergent property is
something we prefer not to rely on in a soundness proof. (The analogy
with the |
| Mike Vanier |
Page 214: There is an error in Table 3.4 (lowering
rules for control operators). The
whereas it should be
In other words, the result of the |
| Jonah Weinbaum |
Page 94: At the top of page 94 we have, “Calling
( There’s a missing “is” after “the result.” (Found on September 15, 2025.) |
| Jonah Weinbaum |
Page 101: Immediately above the definition of
insertion-sort are two algebraic laws. In the second law,
the function on the left-hand side should be
insertion-sort, not insert. (Found on
September 19, 2025.)
|
| Bao Zhiyuan |
Page 356: In the penultimate paragraph on page 356, the
math-style type of the instance (@ length bool) is
mistakenly given as bool list → bool. The correct
math-style type is bool list → int. The Typed μScheme type,
which is shown as ((list bool) ‐> int), is correct.
(Found on March 22, 2023.)
|
| Bao Zhiyuan | Page 476: In the first paragraph of Section 8.3, which says “But unlike μScheme, μMLhas…”, there should be a space between “μML” and “has.” (Found on April 20, 2023.) |
| Bao Zhiyuan | Page 471: At the bottom of the page: “…, the number of variables under the forall must be equal the to number of type parameters T is expecting.” “be equal the to number” should be “be equal to the number”. (Found on April 24, 2023.) |