small medium large xlarge

The latest version of the book is P1.0, released 11 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.

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

If you've found a new error, please submit it.

  • Typo
  • Tech. error
  • Suggestion
  • Maybe next edition
  • Not a problem
  • Reported in: P1.0 (17-Dec-16)
#80977
Paper page: p151
The code for `def decode_response({:error, error}) do` needs to be updated. As written, an errorful call to the github API will produce something like...more...
  • Reported in: P1.0 (01-Nov-16)
#80846
PDF page: All

Code is not indented properly on Kindle.--Jeff Morgan

  • Reported in: P1.0 (12-Jan-17)
#81052
PDF page: 1
This may seem bizarre, but I'm a little concerned about the title of Chapter 1: "Take the Red Pill." I appreciate the Matrix reference, especially ...more...
  • Reported in: P1.0 (04-Jan-17)
#81041
Paper page: 8
Compile and Run -------------------- Once you tire of writing ... This reads very strange. I assume it should probably rather be: Once you get...more...
  • Reported in: P1.0 (11-May-17)
#81533
PDF page: 13
Second paragraph from the bottom, last sentence: "Elixir calls = *the* match operator." I see two reasons to fix this. Firstly, I am not aware o...more...
  • Reported in: P1.0 (20-Jun-17)
#81703
PDF page: 21
Paper page: 21

In the section Garbage Collection in chapter 2, line number 9 -> you have used 'divved' which I think should be 'divided'--Praveen

  • Reported in: P1.0 (22-Dec-16)
#80993
Paper page: 28
# Keyword Lists Example is wrong. I verified in Elixir 1.2.7 and 1.3.4 that it actually works the opposite way as described in the book! ## Exam...more...
  • Reported in: P1.0 (22-Dec-16)
#80994
Paper page: 28
# Keyword Lists The book only mentions that "square" brackets can be left off, but the last code example on page 28 shows that "curly" brackets are...more...
  • Reported in: P1.0 (26-Dec-16)
#80999
Paper page: 28
Keyword Lists =========== I think I finally figured out what was supposed to happen in the last keyword list example. Wrong example from the bo...more...
  • Reported in: P1.0 (22-Dec-16)
#80995
Paper page: 29
Maps ==== Syntax example seems to indicate that the "key" can be duplicated in a map. But this is not the case and the first value would be overwr...more...
  • Reported in: P1.0 (09-Nov-16)
#80858
PDF page: 32
When creating the new times on the previous page: iex(35)> t1 = Time.new(12, 34, 56) {:ok, ~T[12:34:56]} iex(36)> t2 = ~T[12:34:56.78] ~T[12:34:...more...
  • Reported in: P1.0 (09-Mar-17)
#81187
PDF page: 34
with-scope.exs does not seem to compile. I first tried entering it directly into iex and got 'missing do keyword in with'. Tried to just compile the f...more...
  • Reported in: P1.0 (26-Jun-17)
#81738
Paper page: 38
Omission of parentheses is stated as being possible within function definitions but not within expressions (As I understand) However, the examples ...more...
  • Reported in: P1.0 (10-Nov-16)
#80862
Paper page: 39
This could be considered either a suggestion or technical omission, but: "Exercise: Functions-1" on page 39 does not appear to have a correspondin...more...
  • Reported in: P1.0 (26-Oct-16)
#80834
PDF page: 44
I think there is an error in the pin operator example, in file functions/pin.exs. I am just learning the language, but I think the pin operator makes ...more...
  • Reported in: P1.0 (02-Mar-17)
#81173
Paper page: 70
The motivation for the section "Keeping Track of Values During Recursion" is a bit misleading I believe. The opening paragraph suggests adding up t...more...
  • Reported in: P1.0 (25-Apr-17)
#81473
PDF page: 70%
18. OTP: Supervisors / Supervisors and Workers: >> Nothing looks different, but open lib/sequence.ex. should be: "Nothing looks different, but o...more...
  • Reported in: P1.0 (22-Apr-17)
#81469
PDF page: 73

The example for the exercise ListAndRecursion-3 shows an incorrect output: instead of 'elixir' it shows ?????--Anderson Konzen

  • Reported in: P1.0 (07-Jul-17)
#81800
Paper page: 74
In the section "Lists of Lists" I think more emphasis should be put on the fact that the readings are lists inside of a list, and not just in the head...more...
  • Reported in: P1.0 (07-Jul-17)
#81801
Paper page: 74
In the section "Lists of Lists" I think more emphasis should be put on the fact that the readings are lists inside of a list, and not just in the head...more...
  • Reported in: B1.3 (27-May-17)
#81578
PDF page: 83

Updating a map

Consider using Map.update for updating and inserting a new value in a map--Gerrit Seré

  • Reported in: P1.0 (26-Jan-17)
#81078
PDF page: 83
Under "Updating a Map", the last line reads: "However, this syntax will not add a new key to a map. To do this, you have to use the Map.put_new/3 f...more...
  • Reported in: B1.3 (20-Oct-16)
#80821
PDF page: 89
After the call to function `get_and_update_in`, the output shows: %{actor: %{first: "Cary", last: "EWES"}, ...} It looks like an L was accidenta...more...
  • Reported in: P1.0 (04-Jul-17)
#81792
PDF page: 126

iex> String.valid? "∂og" # => true, not false as indicated on p. 126

  • Reported in: P1.0 (27-Nov-16)
#80928
Paper page: 127
Exercise: StringsAndBinaries-7 says "Chapter 7 had an exercise about calculating sales tax on page 110." The page number is correct (Exercise: List...more...
  • Reported in: B1.2 (12-Oct-16)
#80805
PDF page: 127
After the list of sigil types is the following sentence: > In addition, Elixir defines three additional sigils, ~D, ~T, and ~N, which con- struct d...more...
  • Reported in: P1.0 (12-Apr-17)
#81393
PDF page: 127
In the very last line of the page (the last line of the depicted file), the ID should be 130, not 120. That would be consistent with the example list ...more...
  • Reported in: P1.0 (12-Jul-17)
#81833
PDF page: 142
defining the default count as a module attribute has a real disadvantage here, because later in the test, we can not import the attribute into our tes...more...
  • Reported in: P1.0 (22-Mar-17)
#81223
PDF page: 145
Won't Run = mix run -e 'Issues.CLI.run(["-h"])' Will Run = mix run -e "Issues.CLI.run(['-h'])" usage: issues <user> <project> [ count | 4 ] ...more...
  • Reported in: P1.0 (22-Mar-17)
#81224
PDF page: 146
1)- Won't Run = mix run -e 'Issues.CLI.run(["elixir-lang", "elixir"])' 2)- Will Run = mix run -e "Issues.CLI.run(['elixir-lang', 'elixir'])" ...more...
  • Reported in: P1.0 (18-Jun-17)
#81701
PDF page: 151
The decode_response({:error, error}) line apparently expects "error" to be a list since it calls List.keyfind on it. But it's not a list, it's a map a...more...
  • Reported in: P1.0 (13-Jul-17)
#81836
PDF page: 156

instead of :io.format(format, fields)

using ExPrintf might be a nice choice, as most people are familiar with sprintf formats--Tilo Sloboda

  • Reported in: P1.0 (26-Jun-17)
#81736
PDF page: 173

The github identifier for 'triq' is out-of-date. It is now:
"triqng/triq"--Larry Prall

  • Reported in: P1.0 (04-Jan-17)
#81040
PDF page: 191
The chain.exs example should exclude the `when is_integer(final_answer)` guard clause in the `create_process` function. The bug you linked to on GitHu...more...
  • Reported in: B1.2 (11-Oct-16)
#80804
PDF page: 191
Paper page: 180

Running processes exhibits ETS tables screenshot vice versa ETS tables exhibit on the next page shows processes. The screenshots got switched.--Stan

  • Reported in: P1.0 (28-Dec-16)
#81006
PDF page: 194

"It then exits with a status of 99."
Is that true? I only see "exit(:boom)".--Ari Pollak

  • Reported in: B1.2 (08-Oct-16)
#80795
PDF page: 208
This is not strictly a typo, but the twin terminals shown in Chapter 16 (with one above the other) are not rendered properly in the Kindle version, wh...more...
  • Reported in: P1.0 (14-Jul-17)
#81838
PDF page: 208
On PDF page 208 it talks about how the file ~/.erlang.cookie contains the cookie / shared secret , but it does not say what the max length for that ...more...
  • Reported in: P1.0 (10-Jul-17)
#81809
PDF page: 230

Not an error for 1.3, but mixing a new supervisor has changed in 1.4 so the text will need to be updated for the next edition. --Larry Prall

  • Reported in: P1.0 (04-May-17)
#81512
PDF page: 279
The last of chapter 21 says "Next we’ll look at protocols, a way of adding functionality to built-in code", but the next chapter 22 describes about ...more...
  • Reported in: P1.0 (10-Jul-17)
#81807
Paper page: 302

Syntax highlighting of odds/line_sigil.exs is broken due to page break.

  • Reported in: P1.0 (22-Apr-17)
#81468
PDF page: 308

It seems like the mix.exs example is missing something to add LineSigil to the deps.--Ari Pollak

  • Reported in: P1.0 (06-Dec-16)
#80958
PDF page: 546
The code sections, when viewed on the Kindle app on an iPad Pro, are formatted horribly: and extended bold serif font, indentation lost. Same pages l...more...