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 5 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
2
#77682: Table of Contents looks terrible. Previous versions show the chapters and topics well indented. In this version, there is no indentation...more...
P1.0
22-Oct-14
32

#77566: arithmetic operators

I believe that rem and dev ar no operators (any more?).
Or am I doing something stupid in my iex?--Robert Dober

Pre1.0
07-Oct-14
62
#77879: The example under "Using Head and Taill to Process a List" lists/mylist.exs reports this error when loaded into iex: can use only variables an...more...
P1.0
02-Dec-14
64
#77941: The section on default parameters could use better examples. To follow on from the 'greeting' example that's in the book, you could have so...more...
P1.0
17-Dec-14
72
#77940: The footnote that links to the Erlang docs for format/2 has a ">" at the end: ...erlang.org/doc/man/io.html#format-2> Hah, the form doesn't...more...
P1.0
17-Dec-14
73
#77740: The book has this example: iex> l = List.zip([[1,2,3], [:a,:b,:c], ["cat", "dog"]]) [{1, :a, "cat"}, {2, :b, "dog"}] iex> List.unzip(l) ...more...
P1.0
30-Oct-14
78

#77916: Broken reflink at end of second paragraph. Shows metadata for link rather than actual hyperlink. --Luke van derHoeven

P1.0
12-Dec-14
83
#77925: In the first paragraph of the subsection "Nested Accessors and Nonstructs". I think Dave had his Ruby hat on here and where says "you can supp...more...
P1.0
14-Dec-14
88
#77585: The last sentence of the fist paragraph reads: "You can write something -> aking <- to OO code using structs (or maps) and modules." It sh...more...
Pre1.0
09-Oct-14
88

#77917: Last sentence of first paragraph uses "aking" where "akin" was likely intended. --Luke van der Hoeven

P1.0
12-Dec-14
90
#77902: Before using `Integer.is_even/1` twice in the example, you must `require Integer` in iex, or you get "** (CompileError) iex:16: you must requi...more...
P1.0
09-Dec-14
98
#78063: The code for the Stream.open example using Stream.resource causes an error. It seems that instead of the line: fn file -> it needs to be: f...more...
P1.0
20-Jan-15
104
#78167: LPRALL-M-7063:elixir lprall$ iex Erlang/OTP 17 [erts-6.3] [source-f9282c6] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] ...more...
P1.0
08-Feb-15
104

#77744: Under 'Your Turn': "... you wrote a span funtion". Should be 'function' (missing c).--Lars Storjord

P1.0
30-Oct-14
104

#77745: Under "Here is a list of orders", the last order id is 120. Should probably be 130, since the rest are in numerical order.--Lars Storjord

P1.0
30-Oct-14
124

#77997: "true part" at the end of the first example on the page should be formatted as output (blue, in quotes), not as code.--Armando Di Cianno

P1.0
30-Dec-14
124
#77761: Output from iex shows 'true part' with true formatted as a keyword and part formatted as regular code. It should be formatted like a string, i...more...
P1.0
02-Nov-14
127
#77762: Nitpicking: In snippet from control/case.ex, there are two spaces between 'File.open("case.ex")' and 'do', both in the code and the output. Sh...more...
P1.0
02-Nov-14
135
#77763: I suggest a footnote or explanation stating that CLI == Command Line Interface, as some readers may not be familiar with the acronym. (And thu...more...
P1.0
02-Nov-14
138
#77981: At the bottom of the page, the example showcasing pattern matching has an error. A map is bound to the variable `dave`, but subsequent referen...more...
P1.0
28-Dec-14
139
#77951: As printed: mix run -e 'Issues.CLI.run(["-h"])' will not work for me however: mix run -e "Issues.CLI.run(['-h'])" does (note switched single/d...more...
P1.0
21-Dec-14
141
#77904: HTTPoison changed its `HTTPoison.get()` function in version 0.5.0 to return a tuple instead of a map. This change breaks the `Issues.GithubIs...more...
P1.0
09-Dec-14
141
#77757: "In this case, we give the version as "~> 0.3". This matches [..] a minor version of 3 or greater." The code snippet uses version 0.4, not ...more...
P1.0
02-Nov-14
142

#77758: Related to error on previous page: The dependency is listed as 0.4.0 or greater, but the examples show downloading of version 0.3.0.--Lars Storjord

P1.0
02-Nov-14
143
#77924: Hi, with version 0.5 of HTTPoison the response seems to have changed. The example code is broken. I have got it running by changing def h...more...
P1.0
13-Dec-14
145
#78004: When convert_to_list_of_hashdicts is discused, it is unclear where the example is supposed to go. Only on page 148 does the reader figure out ...more...
P1.0
01-Jan-15
155
#77891: When displaying Issues.CLI.process in iex, the first line of the output is printed in a normal typeface up until 'project elixir'. The output...more...
P1.0
04-Dec-14
159
#77905: The "ex_doc" dependency alone isn't enough for the `mix docs` command to succeed: it fails, complains about a missing Markdown processor. I h...more...
P1.0
10-Dec-14
159
#77906: As of 2 August 2014, ex_doc is available as a Hex package and shows up in hex.pm, so installing it from GitHub (and that too from the master b...more...
P1.0
10-Dec-14
159
#78005: While this suggestion has been reported before, it would be interesting to note the `only: :dev` deps option at this point. When I checked Hex...more...
P1.0
02-Jan-15
174
#77963: The spawn/link1.exs example on page 174 includes the line: Process.flag(:trap_exit, true) But that line is not needed in this example. ...more...
P1.0
23-Dec-14
174
#78013: Not only will trap_exit be introduced soon, later on as @seadynamic8 reported, but it seems 100% unneeded here (simply commenting it out has n...more...
P1.0
04-Jan-15
174

#78046: `Process.flag(:trap_exit, true)` in `spawn/link1.exs` is useless because you used `spawn` and not `spawn_link` in the example--Gabriele Lana

P1.0
15-Jan-15
174

#77808: The Process.flag(:trap_exit, true) is not introduced yet, until a few pages later. It should be removed.--seadynamic8

P1.0
17-Nov-14
177
#77964: Really, really, really pedantic... In the monitor1.exs sample, the name of the "sad" routine changed from "sad_function" (in the linkx.exs ...more...
P1.0
23-Dec-14
177
#77965: In the command line used to run monitor1.exs the suggested line is: $ elixir -r monitor1.exs -e Monitor1.run However, because the last l...more...
P1.0
23-Dec-14
178

#77564: 'bahviour' I assume you meant behavior?--Nhu Nguyen

Pre1.0
07-Oct-14
182
#77896: The results you show for running $elixir fib.exs are: [{37, 39088169}, {37, 39088169}, {37, 39088169}, {37, 39088169}, {37, 39088169}, {37, ...more...
P1.0
05-Dec-14
189

#77593: class Account implements Model should be class Account extends Model

also on page 383 in the epub version for iBooks--Daniel Aquino

Pre1.0
10-Oct-14
215
#77966: The "supervisor diagram" on this page looks very nice in the PDF. The same image in the ebook version (read in iBooks on a Mac) is pretty ter...more...
P1.0
23-Dec-14
231

#78055: The link to the exercise Exercise: OTP-Applications-3 is broken resp. the exercise is not available.--Pierre Sugar

P1.0
18-Jan-15
266

#78054: Using Elixir 1.0.2 here, and IO.ANSI.escape looks like it may no longer exist. IO.ANSI.format works just dandy, however.
--Armando Di Cianno

P1.0
18-Jan-15
268
#77792: In "Implementing a Protocol", You need to change iolist_to_binary to IO.iodata_to_binary, since that's what is in the source code now and ioli...more...
P1.0
10-Nov-14
269
#78057: The output of the example code on this page seems to be incorrect, and this may changed from a previous case before Elixir 1.0.2. HashDict ...more...
P1.0
18-Jan-15
271

#77600: Thats what the @fallback_to_any line does. -> That's what the @fallback_to_any line does.--Benjamin Tan

Pre1.0
10-Oct-14
272
#77973: On the page, when describing the way the code recognizes the construct 'fifty[bit]' it says that: ---- <<the mechanism handling the constr...more...
P1.0
26-Dec-14
276
#78058: This page has the following near the top. >>> IO.inspect fifty # => %Bitmap{50=0110010} IO.inspect fifty, structs: false # => %{__struct__:...more...
P1.0
18-Jan-15
276
#78059: Bitmap.new(value: 12345678901234567890) does not work (likely changed by elixir 1.0.2 time-frame). Standard struct type creation works, tho...more...
P1.0
19-Jan-15
281

#78060: binary_to_atom needs to change to String.to_atom in the example code--Armando Di Cianno

P1.0
19-Jan-15
290
#78083: The `raise` in the code example, which is used to re-raise the exception seems to now need to literally be Kernel.reraise/3 (although the /2 f...more...
P1.0
25-Jan-15
298

#77590: These same benefits can aso apply to Elixir code. (aso -> also)--Benjamin Tan

Pre1.0
10-Oct-14
303

#77591: There's no need to manually remove Supervisor, since mix projects by default do not come with the supervisor.ex anymore.--Benjamin Tan

Pre1.0
10-Oct-14
305

#77592: Last line: And so it goes ? Either incomplete sentence or missing punctation. --Benjamin Tan

Pre1.0
10-Oct-14
306
#77595: What happens if we change the call to Simple.count_atoms [[:a, :b], :c]? This should be: What happens if we change the call to NoSpecs.l...more...
Pre1.0
10-Oct-14