small medium large xlarge

The latest version of the book is P1.0, released about 3 years 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 (12-Nov-14)
  • Fixed: 07-Nov-16, awaiting book release
#77801
Paper page: xi

Section "What's in This Book? Chapter 2,": 'of' missing in These are some the ...
(Very minor typo indeed.)--Sascha Koch

Colin Jones says: Thanks! This will be fixed in the next version.
  • Reported in: P1.0 (23-Apr-15)
#78373
Paper page: 7
In the code listing for `when.clj` the symbol `test` is in bold. (Probably because there is a core function named `test`.) I think this (and other cod...more...
Colin Jones says: I'll check on this. Thanks for bringing it up!
  • Reported in: P1.0 (14-Jun-15)
  • Fixed: 07-Nov-16, awaiting book release
#78504
Paper page: 9
The `cond` macro in `basics.cond.clj`, which ought to be recursive, calls out to the `clojure.core` version. Solution: Delete the `clojure.core/`...more...
Colin Jones says: Sorry for the late reply here - this is the actual definition of `clojure.core/cond`, not an example I wrote. I will introduce it with a bit more clarity.
  • Reported in: P1.0 (25-Apr-15)
  • Fixed: 07-Nov-16, awaiting book release
#78375
Paper page: 13
The penultimate paragraph has a phrase “either remember know by heart.” I suspect that what was intended is “either remember or know by heart.”--Mike ...more...
Colin Jones says: Thanks!
  • Reported in: P1.0 (19-Jul-16)
  • Fixed: 07-Nov-16, awaiting book release
#80528
PDF page: 34
This is a bit of a nitpick, but a macro can actually emit a call to a private function in a different namespace by derefing the fully qualified var wh...more...
Colin Jones says: Good point, "must" is too strong, but I think the overarching point about where to be careful stands. I'll soften the language there. Thanks!
  • Reported in: P1.0 (19-Jul-16)
  • Fixed: 07-Nov-16, awaiting book release
#80527
PDF page: 38
join-input-lines takes separator as a parameter, then ignores it and uses a literal ",". I'm pretty sure the intention was for separator to appear as ...more...
Colin Jones says: Yep, absolutely, thanks!
  • Reported in: P1.0 (28-Dec-14)
  • Fixed: 07-Nov-16, awaiting book release
#77982
PDF page: 39
Replace Luckily, we can get the best of both worlds by *wrapping* a macro as a thin wrapper around the function version: with Luckily, we can get t...more...
Colin Jones says: Thanks! Will be fixed in the next version.
  • Reported in: P1.0 (13-Sep-14)
  • Fixed: 07-Nov-16, awaiting book release
#77326
Paper page: 43
Output at bottom of the page indicates: expected: (= 1 (throw (Exception.))) but should be expected: (= 1 (do (throw (Exception.)) 1))-...more...
Colin Jones says: Thanks for reporting this. Will be fixed in the next version.
  • Reported in: P1.0 (19-Jul-16)
  • Fixed: 07-Nov-16, awaiting book release
#80529
PDF page: 44
A couple of things here: 1) our-is uses the test/try-expr macro, not the try-expr function defined immediately prior. 2) The first arity of our-is c...more...
Colin Jones says: Yep, this was problematic. Thanks!
  • Reported in: P1.0 (20-Jan-15)
  • Fixed: 07-Nov-16, awaiting book release
#78065
PDF page: 114

data List = Nil | Cons Int List

Well, Elm uses "type" instead of "data" as the reserved word for building algebraic data types.--Shao Cheng

Colin Jones says: I think this comment might be for a different book? The text here doesn't seem to be in this book, and this book's PDF only has 111 pages (so page #114, the one listed here, doesn't exist).