We try to keep our books accurate, but sometimes mistakes creep in. This page lists the errors submitted by our astute readers. If you've found a new error, please submit it.

The latest version of the book is P5.0, released about 1 month ago. If you've bought a PDF of the book and would like to upgrade it to this version (for free), visit your home page.

Key: Typo Tech. Error Suggestion Not a problem Next edition

By default this page displays the errata for the latest version of the book. If you have a previous version, select it here:  

(To find out what version you have, look at the copyright page, a few pages in from the front of the book. If it says (say) 'Second Printing', then here it'll be P2.0. If there are interim PDF releases in that printing, they'll be 2.1, 2.2, and so on.)

PDF Paper Description Found in Fixed in
105

#48885: On fourth bullet (line 16) Tail2-2 must read Tail2-B, Tail2 must read Tail2-A--Norbert Müller

P3.0
04-Mar-12
131

#48887: The book translates some Scala to Ruby as:

args.each {|arg| println(arg)}

println isn't a Ruby function so it should be 'puts'--Nigel Lowry

P2.0
04-Mar-12
144
#49230: In section "Classes in Scala": class Person(firstName: String, lastName: String) doesn't result in a class with firstName and lastName attribu...more...
P5.0
29-Apr-12
148
#49231: In scala/employee.scala: Using "override val" for the name attribute in Employee is not necessary. It's easier to write it like this: class...more...
P5.0
29-Apr-12
148
#49232: In scala/employee.scala: "id():String" isn't recommended style, the colon should always be followed by a space. It's right most of the time, b...more...
P5.0
29-Apr-12
150
#48929: In the description of the sort example it is said "that will yield a case-insensitive sort". This is not true as the comparison is only perfo...more...
P3.0
11-Mar-12
167
#49148: In the first paragraph of the Scala subsection titled "Concurrency" (bottom of the page numbered 167 on the page in the PDF --- my reader thin...more...
P5.0
19-Apr-12
232
#49000: In "you’ll define a higher-order function with the fn function", "higher-order" should be "anonymous". Using "fn" always defines an anonymous ...more...
P5.0
27-Mar-12
238
#48966: On line 4-5 (SomeType.arg) means fire the constructor for SimpleCompass, binding arg to the first parameter. should be (SomeType.arg) m...more...
P3.0
20-Mar-12
263
#48967: There is a discrepancy between the two implementations of the Fibonacci sequence on pages 262-263 of the UK edition. The 1st fib implement...more...
P4.0
20-Mar-12

Stuff To Be Considered in the Next Edition

PDF Paper Description Found in Fixed in
35
#48024: You say "... class will be much more difficult to debug because Ruby can no longer tell when a method is missing. We would definitely want str...more...
Bruce Tate says: Your design is better than mine. Perhaps in the next edition?
P3.0
23-Nov-11
42
#47508: Figure 2.1 is correct but to make it consistent with the code you show, the three blue boxes on the left should be moved down with the left ar...more...
Bruce Tate says: Good catch. Changes like this are a little bit dangerous and expensive, so I am going to live with this problem and fix it in the next edition, ok?
P3.0
05-Sep-11
92
#47649: In the chapters about Prolog, tuples and list are mentioned. 1. Prolog does not have a real tuple type, and especially not a constant acce...more...
Bruce Tate says: Ah... the danger of writing about a language that is relatively new to me. Unfortunately, this error is pervasive in the chapter, and pretty difficult to fix at this stage. I am going to have to wait until the next edition. Thanks for the catch, and sorry for the error.
P4.0
27-Sep-11
171

#48059: The Fibonacci sequence is defined with the 0th element as 0. The definition on page 171, as another_fib, starts with the 0th element as 1.--Tyler Bindon

Bruce Tate says: You're right, of course. I'm not going to change it here, as the intention is clear enough and I would be likely to inject more errors in the manuscript by fixing the problem. I am going to wait for the next edition to fix this one, ok?
P4.0
28-Nov-11
193
#47401: Immediately after mentioning Erlang is tail recursion optimized, two recursive examples are given - factorial and fibonacci. But neither of th...more...
Bruce Tate says: Good catch. I will revise these in next edition, ok?
P3.0
17-Aug-11
239
#48034: In Hackers and Painters, Graham chronicles a start-up that leveraged produc- tivity with Lisp to achieve productivity that no other vendors co...more...
Bruce Tate says: Good suggestion. Will consider for next edition.
P4.0
25-Nov-11
250
#48060: The Fibonacci sequence is defined with the 0th element as 0. The definition on page 250, as fib, starts with the 0th element as 1. This gives ...more...
Bruce Tate says: Good catch, but I think the intent is clear, and don't want to risk turning a small problem into a bigger one. Will consider for the next release. Thanks for finding this one.
P4.0
28-Nov-11