Book Cover

Programming in Haskell

2nd Edition


Errata

Many thanks to Camille Akmut, Harald Bögeholz, Jurjen Bokma, Florian Bruhin, Merlin Büge, Truman Collins, Philip Craig, Daniele Filaretti, Jinbeom Hong, Hideki Ikeda, Anatoly Kamchatnov, Kamil Kisiel, Kris Katterjohn, Guillaume Koenig, Vilem-Benjamin Liepelt, Jeremy Moore, Tom Moss, Carlos Suberviola Oroz, Ivan Perez, Peter Summerland, Yoshihiro Tanaka, Adrian Wong, Kazu Yamamoto, Christina Zeller and Pedro Zühlke for pointing out the errata items listed below.

Please contact the author if you spot any further issues.

Page 9. The phrase "updated of" should be "updated version of".

Page 12. The phrase "can inferred" should be "can be inferred".

Page 24. Characters use single quotes ' ' rather than single forward quotes ´ ´.

Page 36. In exercise 1, the capital letter 'O' should be the digit '0'.

Page 63. The expression 1:2:3:[4,5] should be 1:2:3:4:[5].

Page 65. The type for even should have a space before the :: symbol.

Page 74. The phrase "i captured" should be "is captured".

Page 81. The phrase "three of" should be "three or".

Page 82. The phrase "number is sequence" should be "number is a sequence".

Page 86. The defintion for rmdups should be as follows:

     rmdups []     = []
     rmdups (x:xs) = x : rmdups (filter (/=x) xs)

Page 87. The phrase "same process" should be "the same process".

Page 89. The type [Bool] should be [a] in the type for all and any.

Page 94. The phrase "covered in" should be "covered".

Page 97. The phrase "data structure" should be "data structures".

Page 109. In exercise 2, "more efficient" should be "potentially more efficient".

Page 130. The phrase "give an new" should be "give a new".

Page 140. The phrase "that the each" should be "that each".

Page 142. The phrase "each of each" should be "end of each".

Page 144. The type for move should have a space before the :: symbol.

Page 157. The type for fmap should be (a -> b) -> [a] -> [b]

Page 158. The phrase "even they" should be "even though they".

Page 162. The phrase "desire the" should be "desire to".

Page 167. The phrase "instances declarations" should be "instance declarations".

Page 175. The phrase "An more in-depth" should be "A more in-depth".

Page 175. In exercise 4, <*> should be (<*>) and <$> should be <*>.

Page 179. The phrase "Parser of this" should be "A parser of this".

Page 180. The first <*> on this page should be (<*>).

Page 180. The phrase "style :" should be "style:".

Page 181. The phrase "the the" should be "the".

Page 192. The function display has type display :: String -> IO ().

Page 200. The phrase "in data structure" should be "in a data structure".

Page 207. The phrase "it easy" should be "it is easy".

Page 213. The word "quotations" should be "quotation".

Page 216. The phrase "bodies lambda" should be "bodies of lambda".

Page 233. The final two steps of the inductive case should be as follows:

     Succ (add (add x y) z)
   =   { unapplying the outer add }
     add (Succ (add x y)) z
   =   { unapplying the inner add }
     add (add (Succ x) y) z

Page 256. The word "combinations" should be "combinators".

Page 257. The phrase "the avoid" should be "to avoid".

Page 265. In exercise 1, the capital letter 'O' should be the digit '0'.

Page 269. Exercise 2 should say "This version may be more efficient because it may only require one comparison between x and y for each node, whereas the previous version may require two."

Page 270. In exercise 2 of section A.9, the equation isChoice (x:xs) [] = False isn't necessary.

Page 275. In the second part of exercise 1, 1+2 is both innermost and outermost.