small medium large xlarge

The latest version of the book is P2.0, released 6 months ago. If you've bought a PDF of the book and would like to update 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 (27-Sep-19)
PDF page: 54
When you have this paragraph: Getting the Quantity and Unit Price Using the shirtSizeOfString() function that we developed on page 38, we have all ...more...
  • Reported in: P2.0 (05-Mar-20)
PDF page: 54
In the toInt function, exception(Failure("int_of_string")) is used but this may change in the future so the compiler gives a warning. From the OCaml d...more...
  • Reported in: P1.0 (14-Oct-19)
PDF page: 56
As far as I can tell, where you say: "The underscore in the setInnerText() call skips the first positional parameter and partially applies the priceSt...more...
  • Reported in: P1.0 (14-Oct-19)
PDF page: 67
The code example at the top of the page doesn't work in / It gets an error: "This variant constructor, Some, expects 1 ...more...
J David Eisenberg says: It doesn't work in the sandbox (which doesn't allow you to use Belt at all); it works fine in an independent program and also in the newer sandbox at
  • Reported in: P1.0 (14-Oct-19)
PDF page: 71
In the list of steps on this page, the use of addPrice() is discussed. However that function is not defined until the following page. Rather, addPrice...more...
  • Reported in: P1.0 (15-Oct-19)
PDF page: 79
The text on this page mentions "algebraic data types" but that is the ONLY time the word "algebraic" occurs in the entire book, so the reader cannot b...more...
J David Eisenberg says: It should be "parametric data types"; will fix with next round of updates.
  • Reported in: P1.0 (15-Oct-19)
PDF page: 79
Type t is defined: type t('a, 'b) = | Ok(a) | Error(b); But that does not compile in Do you mean type t(...more...
  • Reported in: P1.0 (16-Oct-19)
PDF page: 80

The two Js.String.splitByRe examples at the bottom of the page each have an extra right paren, causing them not to compile.--Gary Robinson

  • Reported in: P1.0 (22-Aug-19)
Paper page: 87
Hey there, This is a small suggestion I came up with when finishing the chapter on collections and trying to do the final exercise. Since you break...more...
  • Reported in: P1.0 (02-Oct-19)
PDF page: 121
When interoping with JS through the date module, the compiler will throw warnings about unnamed functions. The code currently looks like this: type...more...
J David Eisenberg says: I think this is something new that entered with BuckleScript 6.x, which is after the book was written. I'll put that on the list of things to fix on the next round of updates.