Chapter 1, Kotlin - Data Types, Objects, and Classes, introduces you to object-oriented programming in Kotlin. Kotlin is primary object-oriented programming, and we'll use these features to introduce a functional programming style.
Chapter 2, Getting Started with Functional Programming, covers the basic principles of functional programming using Kotlin's object-oriented programming features.
Chapter 3, Immutability - It's Important, emphasizes on immutability as one of the most important concepts in functional programming. This chapter will give you an in-depth understanding of immutability.
Chapter 4, Functions, Function Types, and Side Effects, introduces you to the basic functional programming concepts around functions, pure functions, and various function types and side effects.
Chapter 5, More on Functions, talks about Kotlin's features for functional programming such as extension functions, operator overloading, DSLs, and corecursion.
Chapter 6, Delegates in Kotlin, covers how Kotlin has language-level support for delegates. Though delegates are a object-oriented programming concept, they can be helpful in making your code more modular.
Chapter 7, Asynchronous Programming with Coroutines, gives you an introduction to asynchronous programming in Kotlin, comparing different styles against coroutines.
Chapter 8, Collections and Data Operations in Kotlin, covers the enhanced collections API by Kotlin and the functional interfaces that Kotlin's collections framework has to offer.
Chapter 9, Functional Programming and Reactive Programming, shows how functional programming can be combined with other programming paradigms to get the best out of them. This chapter discusses how you can combine functional programming with object-oriented programming and reactive programming.
Chapter 10, Functors, Applicatives and Monads, gives you an introduction to typed functional programming and its basic concepts. It also talks about how to implement it in Kotlin.
Chapter 11, Working with Streams in Kotlin, gets you introduced to the Streams API in Kotlin.
Chapter 12, Getting Started with Arrow, covers how to use Arrow and its extensions for functional programming, function composition, currying, partial application, memoization, and optics.
Chapter 13, Arrow Types, helps you understand Arrow data types such as Option, Either, Try, and State and its type classes, functors, and monads.
Appendix, Kotlin's Quick Start, it provides everything that you need to start writing a Kotlin code, such as tools, basic syntax constructs and other resources to help you progress in your Kotlin journey.