Errata are sorted by page number. You can also find them sorted by date or by finder.
The most recent erratum on this page is dated 2025-09-19.
| Page | Description |
|---|---|
| 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 by Raghavendra Nyshadham on November 17, 2022.) |
| 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 by JoshuaB47@github on May 2, 2025.) |
| 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 by Will Cordray on
January 16, 2025.)
|
| 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 by Raghavendra
Nyshadham on November 26, 2022.)
|
| 28 |
In the line following code chunk 28, strike the second “this”: in “This
description is worth comparing |
| 94 |
At the top of page 94 we have, “Calling ( There’s a missing “is” after “the result.” (Found by Jonah Weinbaum on September 15, 2025.) |
| 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
by Jonah Weinbaum on September 19, 2025.)
|
| 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 by Norman Ramsey on September 30, 2023.) |
| 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 |
| 322 |
In Exercise 2a, the type of
but the correct type is |
| 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 by Bao Zhiyuan
on March 22, 2023.)
|
| 366 | “Has the form of a lambda” is meant to be a syntactic restriction, not a premise in the typing rule. (Found by Richard Townsend on March 16, 2023.) |
| 382 |
When applied to an empty list, primitives The corrected code reads as follows:
(Found by Daniel Scherzer on October 27, 2022.)
|
| 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 |
| 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 by Mert Erden on November 1, 2022.)
|
| 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 by Bao Zhiyuan on April 24, 2023.) |
| 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 by Bao Zhiyuan on April 20, 2023.) |
| 491 | The evaluation judgment has the wrong form. See erratum for page 492. (Found by Roger Burtonpatel on February 15, 2024.) |
| 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 |
| S222 |
The type of the continuation given to >>=+ is
misstated as 'a -> b error. It should be
'a -> 'b error. (Found by Norman Ramsey on October 27,
2022.)
|
| S407 |
In Typed μScheme, as a result of a copy/paste error, the predefined
function
(Found by Andrew Fisher and Milod Kazerounian on March 13, 2024.)
|
| S410 |
In Typed uScheme, function The corrected code reads as follows:
(Found by Norman Ramsey on November 3, 2022.)
|
| S440 |
The sentence introducing asFuntype begins with the word
“Functions.” It should be singular. (Found by Daniel Scherzer on
September 17, 2025.)
|
| 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 by Matthew Fluet on
March 24, 2023.)
|
| 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 by Matthew Fluet on
March 24, 2023.)
|