Jason Kikel (4) [Avatar] Offline
Chapter 2 has the feeling of being all over the place. I feel this is due in large part to the naming of the sections. I kept reading up and down thinking "wait, what is being talked about here?" Giving better headings would help the reader put the content into context more easily. Here are some suggestions:

2.1 Working with program state.
- All of the subcategories of this deal with immutability and side-effects. How about renaming to "Program State, Immutability, and Side-Effects" or "Avoiding Side-Effects with Immutability"

2.2 How functional programs calculate
- How about "Flow of control in Functional Programs" or "Evaluation of Functional Programs"? Either one of these would more clearly describe the topic.

2.2.2 How the calculation is written
- Maybe "Using Expressions Instead of Statements"

2.2.3 Benefits of different calculation method
- "Benefits of Functional Evaluation"

2.4 Type safety guarantees
- What? This section is talking about static/dynamic typing and common functional types. How about: "Typing in the Functional Paradigm"

2.4.3. Pattern Matching
- The topic of the section has to do with types. Discriminated Unions certainly are important types to understand. Pattern Matching is more of a behavior that is facilitated by support for Discriminated Union (algebraic) types.
- "Discriminated Unions" would be a better section title since that is the type in question.
- Don't just dive into the pattern matching example in listing 2.3. Give the code for the discriminated union definition first.
Tomas Petricek (160) [Avatar] Offline
Re: Ch 2 Coherency
some of the parts have changed, so the chapter should be more coherent now (including coherency with chapter 1, because some things were oddly divided and repeated...)

However some of the sections still remain. I quite like some of the titles you suggest. I'll discuss this with colleagues, but I think the titles of (former) section 2.2.2 and 2.2 could be improved.