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 B12.0.12.3, released 2 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
0
#52577: Will there be a chapter on using databases with Elixir in the final version of the book? Ideally I'd like to see examples of using mnesia, MyS...more...
B6.0.10.1
04-Sep-13
7

#76554: Text "You can put any Elixir code into .iex." not updated to use .iex.exs as earlier.--Darrin Chandler

B12.0.12.3
21-Mar-14
7
#76435: "You can put any Elixir code into .iex." Should be ".iex.exs" as in the sentence before: "I then created a file called .iex.exs in my home di...more...
B12.0.12.3
17-Feb-14
16

#76555: "gentlemen scientists" is double plural, should be "gentleman scientists"--Mauricio Gomes

B12.0.12.3
21-Mar-14
18
#76589: In this section you describe how "=" assigns values based on pattern matching, so the following works in iex: $ a = 1 1 $ a = a + 1 2 The...more...
B12.0.12.3
30-Mar-14
22

#76634: The parentheses starting with "(and there are things [...]" are never closed.--Paolo Perrotta

B12.0.12.3
08-Apr-14
28
#76588: You state: iex> [1, fred: 1, dave: 2] [1, [fred: 1, dave: 2]] which I read as a list with two values, an integer and a list of key/values p...more...
B12.0.12.3
30-Mar-14
34
#76566: First paragraph after the "Functions and Pattern Matching" heading Missing a space character: "Instead, it tries to match values to pattern...more...
B12.0.12.3
25-Mar-14
41

#76395: Very minor:

"We’re already seen this:" seems like it should be "We've already seen this:"--Jim Garvin

B12.0.12.3
09-Feb-14
41
#76397: In page 40: iex> speak = &(IO.puts(&1)) &IO.puts/1 but text on top of page 41: So Elixir optimized away the anonymous function, replacing...more...
B12.0.12.3
10-Feb-14
41
#76471: So Elixir optimized away the anonymous function, replacing it with a direct reference to the function, IO.puts/2. Think this should be ... ...more...
B12.0.12.3
03-Mar-14
42
#76567: Info Box "The Old Notation" on how the & operator was used before 0.10.1 is has &, > and other special characters escaped: The Old Notation...more...
B12.0.12.3
25-Mar-14
42
#76596: In the purple-colored "note box" named "The Old Notation", the code that it shows has a bunch of xml entities instead of the appropriate great...more...
B12.0.12.3
01-Apr-14
42

#76616: In the box "The old notation" HTML entities are not rendered, but shown in raw form (e.g. iex>…)--Jan Ernsting

B12.0.12.3
05-Apr-14
42

#52320: In the "The Old Notation" sidebar, the & have been escaped as & in the code listings--David Copeland

B6.0.10.1
05-Aug-13
42

#76540: In the box "the old notation" the code example isn't rendered correctly, it show html tags instead of chars (& instead of & for example)--Fredrik Leijon

B12.0.12.3
18-Mar-14
50
#76559: Default Parameters: Code example reads: defmodule Example do def func(p1, p2 // 2, p3 // 3, p4) do IO.inspect [p1, p2, p3, p4]...more...
B12.0.12.3
22-Mar-14
50

#76568: In the example "mm/default_params.exs", the author uses // instead of \\ for default values.--Christian Broomfield

B12.0.12.3
25-Mar-14
50

#76575: In the example mm/default_params.exs
the slashes for default parameters used are // instead of \\, deprecated example code--Fredrik Leijon

B12.0.12.3
28-Mar-14
50

#76386: The first example in "Default Parameters" is still using the deprecated notation "//", instead of "\\".
--Ximo Martinez

B12.0.12.3
08-Feb-14
54
#76615: You write "So Elixir optimized away the anonymous function, replacing it with a direct reference to the function, IO.puts/2." The code exam...more...
B12.0.12.3
05-Apr-14
65
#76382: Private functions ("defp"). I found it strange that, after reading about modules and functions in Chapter 6, it is in a later chapter on the l...more...
B12.0.12.2
07-Feb-14
80
#76659: Where it reads: iex> Enum.sort(["once", "upon", "a", "time"], ...> fn a, b -> String.length(a) < String.length(b) end) ["a", "time", "upo...more...
B12.0.12.3
14-Apr-14
93

#76638: Reads: "A sigil starts with a percent sign", the symbol used is ~, not %--Jamiel Almeida

B12.0.12.3
11-Apr-14
93

#76384: Second paragraph of Sigils: "...starts with a percent sign..." should be "starts with a tilde"--Jim Menard

B12.0.12.3
07-Feb-14
93
#76533: In String Literals, under Sigils it says: "A sigil starts with a percent sign," All the examples seem to indicate sigils start with a ti...more...
B12.0.12.3
14-Mar-14
101

#51983: use of bold face in program output, ie should be plain - eg "*true* part"--paul callaghan

Dave Thomas says: That's a big can o' worms. I'll try to fix it later in the cycle.
B2.0
11-Jun-13
105

#76590: "A sigil starts with a percent sign"
It appears that it starts with a tilde (~).--Will Cosgrove

B12.0.12.3
30-Mar-14
113

#76534: Cha 11 Control Flow, bottom immediately before the example is "Either branch may be absent. taken." The 'taken.' looks like a mixup.--Stephen Hansen

B12.0.12.3
14-Mar-14
147
#76478: for me, 'mix deps.get' followed by 'mix docs' complained about the docs task not existing. I needed to run 'mix deps.compile' in between thes...more...
Dave Thomas says: I tried it here, and it compiled ex_doc automatically.
B12.0.12.3
04-Mar-14
165
#76512: Paragraph near the top, starting with "(The Reference record", currently ends with "It is also returned, along with the pid, by the spawn_link...more...
B12.0.12.3
09-Mar-14
176 167?
#76594: "Can you find a way to reveal the problem (perhaps by passing in a different function, or by sleeping, or increasing the number of propcesses)...more...
B12.0.12.3
01-Apr-14
210
#76678: In the listing of otp-supervisor/2/sequence/lib/sequence/supervisor.ex, on line 5: result = {:ok, sup } = :supervisor.start_link(__MODULE__,...more...
B12.0.12.3
16-Apr-14
235
#76577: I am currently learning Elixir macros. My understanding of the unquote function is that it code inside is evaluated at macro expansion time, t...more...
B12.0.12.3
29-Mar-14
264
#52196: This may be a bit beyond scope, but it might be nice to give an example of how this is a little different with defrecord here (simply declarin...more...
B5.0.10.0
16-Jul-13
286

#76646: for the Line 7 description,
"size takes a collection an returns am integer (>=0)"

two typos, takes a collection and return an integer--Matthew Lyon

B12.0.12.3
11-Apr-14