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 P1.0, released 9 months 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
29
#77900: scheduler.lua has a bug where actions scheduled for later prevent actions scheduled for earlier to be run. I believe this is because the `r...more...
P1.0
08-Dec-14
93

#78016: keyword 'data' was changed to 'type' in newer elm versions--Wolfgang Roesner

P1.0
05-Jan-15
94
#77994: import List (..) is required to get this example to work: > 1 :: 2 :: 3 :: []] Otherwise get an error:is required to get this example to wo...more...
P1.0
30-Dec-14
96

#78592: Missing word:

You can explore more of [the] List functions ...--Rich Morin

P1.0
10-Jul-15
102

#78593: It would be helpful to explain the historical context and/or rationale for the function name "lift".--Rich Morin

P1.0
10-Jul-15
103
#78652: For the benefit of later readers, what used to be `Text.asText` is now `Graphics.Element.show` and `lift` is now `Signal.map`, so a working ex...more...
P1.0
20-Jul-15
103
#78653: `Signal.count` has been removed. Here's how to implement it yourself: count : Signal a -> Signal Int count asig = foldp (\sig total -> tot...more...
P1.0
20-Jul-15
103
#78493: Not only is "lift" no longer part of Elm, but "asText" results in "Cannot find variable `asText`" — this makes the whole chapter really diffic...more...
P1.0
13-Jun-15
104

#77955: In the latest build of Elm 0.14 the term lift has been removed. It is now map.--Rene Rubalcava

P1.0
21-Dec-14
112
#78594: Inconsistent word usage: This page says "... we can lift the gameState signal onto display." Elsewhere (IIRC), the book speaks of lifting a...more...
P1.0
10-Jul-15
116

#78595: It might be helpful to point out the nice way that "all" works with currying in allHeadsSafe.--Rich Morin

P1.0
10-Jul-15
117

#78596: The discussion of spawnHead is a bit skimpy for such a complex function.--Rich Morin

P1.0
10-Jul-15
122

#78597: The keming of "Text" is very poor in "More about dealing with Text on ..."--Rich Morin

P1.0
10-Jul-15
125

#78598: Consider moving "Each new language ..." to the start of the following paragraph.--Rich Morin

P1.0
10-Jul-15
126

#77970: The 3rd paragraph reads:

[...] The third day will a little shorter [...]

missing "be":

[...] The third day will **BE** a little shorter [...]--Martino Visintin

P1.0
25-Dec-14
127
#78599: The phrase "C-style sigils" doesn't seem very helpful. Wikipedia's "Sigil (computer programming)" page doesn't talk about C and none of my C ...more...
P1.0
10-Jul-15
129

#78495: The text has literal asterisks in "*intelligent sugar*"

Surely those words should just be italicized. --Ricardo Signes

P1.0
13-Jun-15
132

#78600: "... ran the module, and ..." should be "... ran the module and ..."--Rich Morin

P1.0
10-Jul-15
133

#78601: The sentence "Just for fun, ..., and {w,h}." is a bit hard to parse. I'd reword it.--Rich Morin

P1.0
10-Jul-15
133

#78602: "... the first or second, it will ..." would read better as
"... the first or second definition, Elixir will ..." --Rich Morin

P1.0
10-Jul-15
134

#78603: "... named functions and pipes, ..." should be
"... named functions, and pipes, ..."--Rich Morin

P1.0
10-Jul-15
134
#78019: The third paragraph from the bottom begins "Elixir executed Rectangle.area/2, and then...". I think the arity of the function should be 1, tha...more...
P1.0
06-Jan-15
135

#78604: I'd change "This kind of deconstruction ..." to
"This kind of destructuring ..."--Rich Morin

P1.0
10-Jul-15
135
#78024: The key identifying the book title in the modified map in the middle of the page should be "title" not "book". That is, the map should read %{...more...
P1.0
06-Jan-15
136

#78605: In the second iex example, "in" is emboldened (and shouldn't be).--Rich Morin

P1.0
10-Jul-15
136

#78606: I might add a few more examples, eg: "is_list 'string'", "is_list [1, 2]", and is_list {1, 2}".--Rich Morin

P1.0
10-Jul-15
139

#78607: Why, exactly, is the Quicksort "ironically named"? Explain or remove.--Rich Morin

P1.0
10-Jul-15
142

#78608: "... were all [performed] in the console.--Rich Morin

P1.0
10-Jul-15
144

#78609: "... set of fields with the ..." should be
"... set of fields and the ..."--Rich Morin

P1.0
10-Jul-15
144

#78610: "... to represent our video." should be
"... to represent each video."--Rich Morin

P1.0
10-Jul-15
146

#78613: "... a customer decides to rent, return, or lose ..." - Few customers "decide to lose" a video.--Rich Morin

P1.0
12-Jul-15
147

#78614: I'd swap the order of the fire/2 and fire/3 definitions.--Rich Morin

P1.0
12-Jul-15
147

#78615: "Since functional languages are immutable, ..." should be
"Since data structures in functional languages are immutable, ..."--Rich Morin

P1.0
12-Jul-15
147

#78616: I'd change "in the console use quote:" to
"use quote in the console:"--Rich Morin

P1.0
12-Jul-15
150

#78617: "That means ... but that syntax is repetitive. Let's fix that." has too many
"that"s. Fix that...--Rich Morin

P1.0
12-Jul-15
152

#78618: In the code block, shouldn't &renting/1 be &returning/1 ?--Rich Morin

P1.0
12-Jul-15
153

#78619: "... confirms macros run ..." should be
"... confirms that macros run ..."--Rich Morin

P1.0
12-Jul-15
154

#78620: "... and try it out" should be "... and try it out."--Rich Morin

P1.0
12-Jul-15
160

#78621: There is an extra "...> end" line in the first iex example.--Rich Morin

P1.0
12-Jul-15
161
#78622: "Elixir provides tasks, which starts another process and waits until ..." should be "Elixir provides tasks, which start another process and ...more...
P1.0
12-Jul-15
161

#78623: The sentence "Elixir also provides ... applications." is long and convoluted. I'd break it up.--Rich Morin

P1.0
12-Jul-15
161

#78624: "... our video store using ..." should be
"... our video store, using ..."--Rich Morin

P1.0
12-Jul-15
162

#78625: "... is a behavior with some ..." should be
"... is a behavior, with some ..."--Rich Morin

P1.0
12-Jul-15
165

#78626: "The children defines ..." should be
"The children list defines ...".--Rich Morin

P1.0
12-Jul-15
165

#78627: The word "in" (in the ERROR REPORT) is emboldened and should not be.--Rich Morin

P1.0
12-Jul-15
168

#78628: "... not as mature, as some of ..." should be
"... not as mature as some of ...".--Rich Morin

P1.0
12-Jul-15
176
#78118: The example of key handling in dictionary on that page defines: the_keys = keys(numbers) However, the following outputs of "collect(...)" ...more...
Jack Moffitt says: We'll fix this in the next edition if/when there is one.
P1.0
29-Jan-15
179
#78000: In (2) near the end of the page it says numbers = [:one => 1, :two => 2] the_keys = keys(numbers) But the result in (3) collect(th...more...
Jack Moffitt says: We'll fix this in the next edition if/when there is one.
P1.0
31-Dec-14
186

#78629: The code "type M<: ..." should be emboldened.--Rich Morin

Jack Moffitt says: We'll fix this in the next edition, if/when there is one.
P1.0
12-Jul-15
203

#78663: Julia changed the semantics of idct to return floats between 0 and 1. The "./ 255.0" should be removed or the code will produce all black images.--Jack Moffitt

P1.0
28-Jul-15
205
#77800: Chapter 5, Julia - Multidimensional arrays. In note #1, missing "eye(M,N)" from at the end of the following sentence: eye constructs the ...more...
Jack Moffitt says: This apparently got fixed before the book was published.
B6.0
12-Nov-14