susan.harkins-LOCKED (26) [Avatar] Offline
#1
Please share post-publication errors in this folder. We'll compile and publish a comprehensive list for everyone's convenience. Thank you!

Susan Harkins
Errata Editor
giatorta (3) [Avatar] Offline
#2
Re: Post publication errata
on p.155, note 15: "or the case where the space requirement" should be "*in* the case where the space requirement"
oliverdyas (1) [Avatar] Offline
#3
Re: Post publication errata
On page 318, listing 13.6: in the function "soft-attack", "createGainNode" has been renamed just "createGain"
giatorta (3) [Avatar] Offline
#4
Re: Post publication errata
on p. 359, last line: "covert" should be "convert"
giatorta (3) [Avatar] Offline
#5
Re: Post publication errata
p. 191, listing 8.2 (build-contract function): 'require and 'ensure should be :require and :ensure
mearnsh (5) [Avatar] Offline
#6
Re: Post publication errata
Listing 7.7 (p. 167)
"replicate" on line 4 is deprecated since Clojure 1.3, should use "repeat" instead
mearnsh (5) [Avatar] Offline
#7
Re: Post publication errata
p. 189 line 6
"http://joyofclojure.com/hello" should be "http://www.joyofclojure.com/hello"

the no-www form does not currently redirect to the latter.
mearnsh (5) [Avatar] Offline
#8
Re: Post publication errata
pgs 204 and 205
(minor)
keywords qualified with the "user" namespace appear a number of times in the examples on these page, although they were introduced in the context of a "joy.udp" namespace on p 201.
mearnsh (5) [Avatar] Offline
#9
p. 206

The output of the example

(compile-cmd osx)
;=> "/usr/bin/gcc"


is not consistent with the code given in the preceding pages (203-305), it's the first time "gcc" appears in the text.
mearnsh (5) [Avatar] Offline
#10
p. 447 Section 17.4.1
"As we showed in figure 10.7,"

...refers to the wrong figure. I'm not sure which figure it's supposed to refer to!
Johannes Beigel (1) [Avatar] Offline
#11
On page 282, footnote 3: I think it's wrong to say that proxy-user is not thread-safe. Instead, it is not *reentrant*, see note by glchapman on https://clojuredocs.org/clojure.core/proxy-super:

"If calling the base method results in another call to the virtual method you are overriding (before the proxy-super call has returned), your proxy's code will not be invoked. Instead, the call will go directly to the base class's method."

That's a huge difference and the problematic behavior is not related to multi-threaded execution.
122645 (12) [Avatar] Offline
#12
p. 78

"section XREF ch09lev1sec2"

Is a typo it should refer to the appropriate chapter and section in a more human readable form.
122645 (12) [Avatar] Offline
#13
p.45

The footnote should be "2014" not "2013".
122645 (12) [Avatar] Offline
#14
p. 61

In the last sentence, "section 3.5" should be "section 4.5".
122645 (12) [Avatar] Offline
#15
p. 98

Last sentence. "5.5" should be "5.4".
122645 (12) [Avatar] Offline
#16
p. 130

Footnote #11: "chapter 14" should be "chapter 15".
122645 (12) [Avatar] Offline
#17
p. 143

In footnote #5: "in section 12.4, all closure functions" should be "in section 12.4, all Clojure functions".
122645 (12) [Avatar] Offline
#18
p. 145

"(discussed in chapter 14)" should be "(discussed in chapter 15)".
122645 (12) [Avatar] Offline
#19
p. 165

The last bullet point on the page. This needs to be logically consistent. I think the word 'not' has to be removed from the first sentence:

"In a language such as Haskell that has ubiquitous lazy evaluation and pure functions, it’s often not necessary to impose a strict order of execution."

Also, the following sentence is not clear:

"Although Clojure isn’t entirely lazy, the matter of out-of-order execution isn't a factor against CPS." Something like the following would be much clearer. It removes the double negative and makes the relevance of the previous sentence more clear.
"Clojure, having many lazy evaluation features, can make use of CPS to impose strict ordering as well."
122645 (12) [Avatar] Offline
#20
p. 166

Last sentence. "you'll it tackle next" should be "you'll tackle it next".
122645 (12) [Avatar] Offline
#21
p. 251

"Elapsed time: 2000.409 msecs" should read "Elapsed time: 1000.3 msecs". The memoized function will use the cache the second time it is called.
122645 (12) [Avatar] Offline
#22
p. 467

Index entry for 'futures' indicates that there should be a mention of it on page 255, but this is not so. '255' needs to be removed and perhaps replaced with the intended page number reference.
258972 (1) [Avatar] Offline
#23
In listing 6.3, "A lazy, tail-recursie quicksort implementation" the commend next to `(remove small? xs)` that reads "Work all > pivot" Should be "Work all >= pivot" (With the appropriate glyph for greater or equal than.

1. Because remove is only removing smaller than pivot, not smaller or equal to.
2. If the comment were correct, the listing would be wrong because it would not be able to sort a collection where a value was duplicated.
122645 (12) [Avatar] Offline
#24
p. 472

The entry for 'pmap' references the wrong page numbers.
452928 (1) [Avatar] Offline
#25
p. 215, listing 9.4

The method
fixo-pop


should be
(fixo-pop [t]
       (if (seq vector)
         (fixed-fixo limit (pop vector))
         t))