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