andre

andre

Effective Haskell:Typos (B9 - PDF version) - Chapter 9 to 15

@RebeccaSkinner

Thanks you for this beautiful book.

Chapter 8 - p.317 3rd paragraph from the bottom

If you build your application and run it now you’ll see how you can combine
a procedural shell with a functional core to combine pure functions like

should read

If you build your application and run it now you’ll see how you can combine
a procedural shell with a functional core to create pure functions like

Chapter 8 - p.324 Second paragraph

to write imperative style blocks of called call “do

should read

to write imperative style blocks called “do
(removed “of” and “call”)

Chapter 9 - p.335 (3 typos)

-First paragraph, last sentence

IO is a great introduction to these type classes, that are many other ways that
Functor and Monad are useful that haven nothing to do with side effects or IO.

should read

IO is a great introduction to these type classes, there are many other ways that
Functor and Monad are useful that have nothing to do with side effects or IO.

-Last paragraph

A Functor is a simple typeclass that has just two functions, fmap and <$. As
you’ll see, Functor throughout the rest of this book, Functor instances are

should read

A Functor is a simple typeclass that has just two functions, fmap and <$. As
you’ll see* throughout* the rest of this book, Functor instances are
(removed “, Functor”)

Chapter 9 - p.353 (2 typos) 2 comments in the code section

– Print it out so we know what we’re staritng out

should read

– Print it out so we know what we’re starting out

– (>>= id) will concatonate elements of a list

should read

– (>>= id) will concatenate elements of a list

Chapter 9 - p.355 Second paragraph

Both our Maybe and Listimplementations satisfied

should read

Both our Maybe and List implementations satisfied

Chapter 9 - p.357 In the middle of the page

in the real world. The return function crates a blank slate

should read

in the real world. The return function creates a blank slate

Chapter 10 - p.367 (2 typos)

-First paragraph, last sentence

avoid immutability by default, but in some cases you’ll find that
considered use of mutability can improve your program.s

should read

avoid mutability by default, but in some cases you’ll find that
considered use of mutability can improve your programs.

Chapter 10 - p.387 Second paragraph

Calculating the histogram should be a fairly time-consuming operation

should read

Calculating the histogram should not be a time-consuming operation
(added “not” and removed “fairly”)
or
Calculating the histogram should fairly be time-consuming operation

Chapter 10 - p.395 Last paragraph

doesn’t change typically have much of a performance impact since the same

should read

doesn’t typically have much of a performance impact since the same
(removed “change”)

Chapter 10 - p.396 In the diagram, the top right

Type: Value Consturctor

should read

Type: Value Constructor

Chapter 10 - p.399 First paragraph

offer strict versions that will reduce on of their arguments to weak

should read

offer strict versions that will reduce their arguments to weak
(removed “on of”)

Chapter 11 - p.410 Second paragraph

The next incremental stap that we could take to

should read

The next incremental step that we could take to

Chapter 11 - p.421 First sentence

The problem is that we’ve told the compiler two do the same thing

should read

The problem is that we’ve told the compiler to do the same thing

Chapter 11 - p.424 In the paragraph above the section “Existential Types”

written before imperdicative types were added,

should read

written before impredicative types were added,

Chapter 11 - p.425 Last paragraph

That’s quite an error message. The internet is about with questions about

should read

That’s quite an error message. The internet is rich of questions about

Chapter 11 - p.430 First paragraph

since neither modifyClassValue norcombineClassValues ever

should read

since neither modifyClassValue *nor * combineClassValues ever

Chapter 12 - p.448 Second to last paragraph

we’re inserting a pure value into the parser, and which means that we

should read

we’re inserting a pure value into the parser, which means that we
(removed “and”)

Chapter 12 - p.465 Last paragraph

how to parse the rest of the document. The other less on to

should read

how to parse the rest of the document. The other lesson to

Chapter 13 - p.469 - Second paragraph, first sentence

Moand transformers give us a better way forward

should read

Monad transformers give us a better way forward

Chapter 13 - p.481 - Last paragraph

ExceptT has simplified our how we can handle the expected

should read

ExceptT has simplified how we can handle the expected
(removed “our”)

Chapter 13 - p.491 - paragraph above the section title “Creating an archiver”

Two of the archive files, example1.txt and example2.txt, are imported the local
filesystem

should read

Two of the archive files, example1.txt and example2.txt, are imported from the local
filesystem

Chapter 13 - p.497 - paragraph under the section title “Tranforming Monads with Class”

Let’s take another look parseChar from our

should read

Let’s take another look at parseChar from our

Chapter 14 - p.536 The code at the bottom of the page

stillValid =
runSafeIO (safeAction “hello”) + runSafeIO (safeAction “hello”)

should read

stillValid =
runSafeIO (stillSafe “hello”) + runSafeIO (stillSafe “hello”)

Chapter 14 - p.537 Second paragraph

updateRefWithCount directly with a SafeRef then we’ll still break referential trans-

should read

updateRefWithCount directly with a SafeRef then we’ll break referential trans-
(removed “still”)

Chapter 14 - p.549 In the info box

INLINE pragma is a strong suggesting to the compiler that it should

should read

INLINE pragma is a strong suggestion to the compiler that it should

Chapter 15 - p.557 Second to last paragraph, very first sentence

The Type kind appears so often because in our earlier examples because it’s

should read

The Type kind appears so often in our earlier examples because it’s
(removed the first “because”)

Chapter 15 - p.561 Last paragraph, very first sentence

In this example you can see that with DataKindsenabled,

should read

In this example you can see that with DataKinds enabled,

Chapter 15 - p.578 (2 typos) Both in the last paragraph

, there different “varieties” of type family that we’ll look at.

should read

, there are different “varieties” of type family that we’ll look at.

, which let us associated a type family with a particular type class

should read

, which let us associate a type family with a particular type class

Chapter 15 - p.578 (2 typos)

-In the paragraph, mid-page

we’ll get an error. Instead, something unexpcted happens:

should read

we’ll get an error. Instead, something unexpected happens:

-In the second to last paragraph

One way that we can get a more through test of our type level code

should read

One way that we can get a more thorough test of our type level code

Chapter 15 - p.604 Under the section “Type Classes: Functions From Types to Terms”, first paragraph

we’ve built up with GADTs and genreating new term level values

should read

we’ve built up with GADTs and generating new term level values

First Post!

andre

andre

Two more typos in Chapter 12.

p. 457 - at the very bottom of the page

{-# MINIMAL , (<|>) #-}

should read

{-# MINIMAL empty, (<|>) #-}

This is stated to be the case in the documentation text.

However, when you look at the definition of the Applicative typeclass, searching for MINIMAL, you don’t find such a pragma for this typeclass. Did I miss something ?

p.466 - Line just above the type signature parseError :: String → FilePackParser a

One option here would be to factor our the error handing into it’s own function

should read

One option here would be to factor our the error handling into it’s own function

Where Next?

Popular Pragmatic Bookshelf topics Top

jesse050717
Title: Web Development with Clojure, Third Edition, pg 116 Hi - I just started chapter 5 and I am stuck on page 116 while trying to star...
New
edruder
I thought that there might be interest in using the book with Rails 6.1 and Ruby 2.7.2. I’ll note what I needed to do differently here. ...
New
mikecargal
Title: Hands-on Rust: question about get_component (page 295) (feel free to respond. “You dug you’re own hole… good luck”) I have somet...
New
leba0495
Hello! Thanks for the great book. I was attempting the Trie (chap 17) exercises and for number 4 the solution provided for the autocorre...
New
fynn
This is as much a suggestion as a question, as a note for others. Locally the SGP30 wasn’t available, so I ordered a SGP40. On page 53, ...
New
brunogirin
When running tox for the first time, I got the following error: ERROR: InterpreterNotFound: python3.10 I realised that I was running ...
New
ggerico
I got this error when executing the plot files on macOS Ventura 13.0.1 with Python 3.10.8 and matplotlib 3.6.1: programming_ML/code/03_...
New
bjnord
Hello @herbert ! Trying to get the very first “Hello, Bracket Terminal!" example to run (p. 53). I develop on an Amazon EC2 instance runn...
New
gorkaio
root_layout: {PentoWeb.LayoutView, :root}, This results in the following following error: no “root” html template defined for PentoWeb...
New
SlowburnAZ
Getting an error when installing the dependencies at the start of this chapter: could not compile dependency :exla, "mix compile" failed...
New

Other popular topics Top

AstonJ
What chair do you have while working… and why? Is there a ‘best’ type of chair or working position for developers?
New
AstonJ
We have a thread about the keyboards we have, but what about nice keyboards we come across that we want? If you have seen any that look n...
New
AstonJ
Thanks to @foxtrottwist’s and @Tomas’s posts in this thread: Poll: Which code editor do you use? I bought Onivim! :nerd_face: https://on...
New
AstonJ
We’ve talked about his book briefly here but it is quickly becoming obsolete - so he’s decided to create a series of 7 podcasts, the firs...
New
First poster: joeb
The File System Access API with Origin Private File System. WebKit supports new API that makes it possible for web apps to create, open,...
New
AstonJ
Was just curious to see if any were around, found this one: I got 51/100: Not sure if it was meant to buy I am sure at times the b...
New
New
PragmaticBookshelf
Author Spotlight: VM Brasseur @vmbrasseur We have a treat for you today! We turn the spotlight onto Open Source as we sit down with V...
New
First poster: bot
zig/http.zig at 7cf2cbb33ef34c1d211135f56d30fe23b6cacd42 · ziglang/zig. General-purpose programming language and toolchain for maintaini...
New
AstonJ
If you’re getting errors like this: psql: error: connection to server on socket “/tmp/.s.PGSQL.5432” failed: No such file or directory ...
New

Sub Categories: