Functional Programming in Scala (2015)
Part 1. Introduction to functional programming
Chapter 1. What is functional programming?
Chapter 2. Getting started with functional programming in Scala
Chapter 3. Functional data structures
Chapter 4. Handling errors without exceptions
Chapter 5. Strictness and laziness
Chapter 6. Purely functional state
Part 2. Functional design and combinator libraries
Chapter 7. Purely functional parallelism
Chapter 8. Property-based testing
Part 3. Common structures in functional design
Chapter 12. Applicative and traversable functors
Part 4. Effects and I/O
Chapter 13. External effects and I/O
Chapter 14. Local effects and mutable state
Chapter 15. Stream processing and incremental I/O