The Author Online Book Forums are Moving

The Author Online Book Forums will soon redirect to Manning's liveBook and liveVideo. All book forum content will migrate to liveBook's discussion forum and all video forum content will migrate to liveVideo. Log in to liveBook or liveVideo with your Manning credentials to join the discussion!

Thank you for your engagement in the AoF over the years! We look forward to offering you a more enhanced forum experience.

susan.harkins-LOCKED (26) [Avatar] Offline
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
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
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
Re: Post publication errata
on p. 359, last line: "covert" should be "convert"
giatorta (3) [Avatar] Offline
Re: Post publication errata
p. 191, listing 8.2 (build-contract function): 'require and 'ensure should be :require and :ensure
mearnsh (5) [Avatar] Offline
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
Re: Post publication errata
p. 189 line 6
"" should be ""

the no-www form does not currently redirect to the latter.
mearnsh (5) [Avatar] Offline
Re: Post publication errata
pgs 204 and 205
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
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
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
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

"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
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

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

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

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

Footnote #11: "chapter 14" should be "chapter 15".
122645 (12) [Avatar] Offline
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
p. 145

"(discussed in chapter 14)" should be "(discussed in chapter 15)".
122645 (12) [Avatar] Offline
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
p. 166

Last sentence. "you'll it tackle next" should be "you'll tackle it next".
122645 (12) [Avatar] Offline
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
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
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
p. 472

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

The method

should be
(fixo-pop [t]
       (if (seq vector)
         (fixed-fixo limit (pop vector))
oylenshpeegul (3) [Avatar] Offline
page xxxv, paragraph 2, second sentence should be project.clj
oylenshpeegul (3) [Avatar] Offline
p. 100, footnote 13

The footnote says,

"You can test for this property of being countable in constant time using the counted? function. For example, (counted? (range 10)) returns true in Clojure 1.0 but false in 1.1, because the implementation of range changed between those versions and no longer provides O(1) counting."

but in Clojure 1.9, I get

$ clj
Clojure 1.9.0
user=> (counted? (range 10))

So I guess the implementation changed back?