small medium large xlarge

The latest version of the book is B5.0, released 3 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: B5.0 (17-Sep-17)
  • Fixed: 02-Oct-17, awaiting book release
#82083
PDF page: 10
5th paragraph, first sentence reads: But building an application with a framework from the very beginning makes it’s nearly impossible to maintain ...more...
Lance Halvorsen says: Thanks!
  • Reported in: B5.0 (17-Sep-17)
  • Fixed: 02-Oct-17, awaiting book release
#82084
PDF page: 10
6th paragraph, last sentence reads: If frees us to focus on the pure domain of our application. it should read: It frees us to focus on the p...more...
Lance Halvorsen says: Thanks!
  • Reported in: B5.0 (14-Aug-17)
  • Fixed: 02-Oct-17, awaiting book release
#81947
PDF page: 13
Maybe a colon would be better to introduce a list in a sentence containing 5 commas. "Just by describing that picture, we’ve identified four main e...more...
Lance Halvorsen says: Thanks!
  • Reported in: B5.0 (14-Aug-17)
  • Fixed: 02-Oct-17, awaiting book release
#81948
PDF page: 18
Apostrophe "confusion" in a couple of places at the beginning of the page: "Now lets’ add coordinate2 to the hits set as well." → "Now let’s add co...more...
Lance Halvorsen says: Thanks!
  • Reported in: B5.0 (13-Aug-17)
  • Fixed: 04-Oct-17, awaiting book release
#81946
PDF page: 26
Additional rationale for using a Map to represent the Board: the guarantee of key uniqueness prevents 2 islands of the same type from being added to t...more...
Lance Halvorsen says: Thanks!
  • Reported in: B5.0 (14-Aug-17)
  • Fixed: 02-Oct-17, awaiting book release
#81949
PDF page: 29
There are a couple of places on this page where the "?" is missing from a function name: "There’s a great function to test for this, MapSet.disjoin...more...
Lance Halvorsen says: Thanks!
  • Reported in: B5.0 (22-Aug-17)
  • Fixed: 03-Oct-17, awaiting book release
#81984
PDF page: 32
iex> :miss = Island.guess(dot, Coordinate.new(2, 2)) :miss This is a false positive. It's not giving a :miss because the coordinate is wrong. It's...more...
Lance Halvorsen says: Thanks!
  • Reported in: B5.0 (30-Aug-17)
  • Fixed: 03-Oct-17, awaiting book release
#82004
PDF page: 32
:miss = Island.guess(dot, Coordinate.new(2, 2)) even Island.guess(dot, Coordinate.new(4, 4)) will still return "false" even though this is dot isla...more...
Lance Halvorsen says: Thanks!
  • Reported in: B5.0 (24-Aug-17)
  • Fixed: 03-Oct-17, awaiting book release
#81987
PDF page: 57
iex> Rules.check(rules, {:set_islands, :player2}) :error This call is also done on page 56 just a few lines above. It reads kind-of weird to have ...more...
Lance Halvorsen says: Thanks!
  • Reported in: B5.0 (05-Aug-17)
  • Fixed: 02-Oct-17, awaiting book release
#81928
PDF page: 63

"iex> {:ok, rules} = Rules.check(rules, :no_win)" should be "iex> {:ok, rules} = Rules.check(rules, {:win_check, :no_win})--Yuan Li

Lance Halvorsen says: Thanks!
  • Reported in: B5.0 (16-Sep-17)
  • Fixed: 02-Oct-17, awaiting book release
#82078
PDF page: 70
Paper page: 63
This is what's on the first line of the page in question: iex> {:ok, rules} = Rules.check(rules, :no_win) This is what it should be: iex> {:ok, r...more...
Lance Halvorsen says: Thanks!
  • Reported in: B5.0 (28-Jul-17)
  • Fixed: 29-Jul-17, awaiting book release
#81891
PDF page: 79
2nd sentence under "Initializing GenServer State" heading: ".. the idea that we're starting a new game process get’s buried in the arguments." C...more...
Lance Halvorsen says: Thanks!
  • Reported in: B5.0 (28-Jul-17)
  • Fixed: 29-Jul-17, awaiting book release
#81892
PDF page: 79

In the phrase, "To do this we’ll follow the GenServer pattern", add a comma, e.g.:

"To do this, we’ll follow the GenServer pattern"--Anthony Collen

Lance Halvorsen says: Thanks!
  • Reported in: B5.0 (02-Aug-17)
  • Fixed: 02-Aug-17, awaiting book release
#81914
PDF page: 83
:no_win won't match with any funciton defined, needs to be the tuple { :win_check, :no_win } iex> ​​ ​​ {:ok, ​​ ​​ rules} ​​ ​​ = ​​ ​​ Rules.chec...more...
Lance Halvorsen says: Thanks!
  • Reported in: B5.0 (11-Aug-17)
  • Fixed: 02-Oct-17, awaiting book release
#81944
PDF page: 84

iex> Game.demo_call(game) instead of Game.call_demo(game) at the third line from the bottom of the page.--Iljun Kim

Lance Halvorsen says: Thanks!
  • Reported in: B5.0 (16-Sep-17)
  • Fixed: 03-Oct-17, awaiting book release
#82079
PDF page: 84
In the "handle_cast" function, change this return value: {:noreply, Map.put(state, :test, new_value}} to this return value: {:noreply, Map.pu...more...
Lance Halvorsen says: Thanks!
  • Reported in: B5.0 (02-Aug-17)
  • Fixed: 02-Aug-17, awaiting book release
#81915
PDF page: 88
In order to get {:error, :invalid_coordinate} on page 88 from the code Game.position_island(game, :player1, :l_shape, 10, 10) the new function on pa...more...
Lance Halvorsen says: Thanks, but the error case will already be a tuple.
  • Reported in: B5.0 (02-Aug-17)
  • Fixed: 03-Oct-17, awaiting book release
#81917
Paper page: 89
I think the method ``def set_islands(game, player) when player in @players, do: GenServer.call(game, {:set_islands, player}) should be defined be...more...
Lance Halvorsen says: Thanks!
  • Reported in: B5.0 (02-Aug-17)
  • Fixed: 03-Oct-17, awaiting book release
#81916
PDF page: 107
Position Islands on GenServer def ​ position_island(game, player, key, row, col) ​ when ​ player ​ in ​ @players, ​ do ​: ​ GenServer.call(game, {​...more...
Lance Halvorsen says: Thanks!
  • Reported in: B5.0 (02-Aug-17)
  • Fixed: 03-Oct-17, awaiting book release
#81918
PDF page: 109
on the game.ex on page 109 we are using: ​ ​ board = player_board(state_data, player), then on page 110 we are using iex to test, but player_board is...more...
Lance Halvorsen says: Thanks!
  • Reported in: B5.0 (03-Aug-17)
  • Fixed: 03-Oct-17, awaiting book release
#81923
PDF page: 112
@players isn't defined yet. This is related with reported error #81916 ​ def ​ set_islands(game, player) ​ when ​ player ​ in ​ @players, ​ do ​: ...more...
Lance Halvorsen says: Thanks!
  • Reported in: B5.0 (01-Aug-17)
  • Fixed: 02-Aug-17, awaiting book release
#81913
PDF page: 117

"it created a new Application for us with it’s own identity, above Phoenix itself"

it's -> its--Mark Wilbur

Lance Halvorsen says: Thanks!
  • Reported in: B5.0 (04-Aug-17)
  • Fixed: 03-Oct-17, awaiting book release
#81925
PDF page: 124
On the text refers: Notice that we’re pattern matching for a successful start of the game server {:ok, _pid} = Supervisor.start_child(:game_super...more...
Lance Halvorsen says: Thanks!