Functional programming languages, such as Java, Scala, and Clojure, are attracting attention as an efficient way to handle the new requirements for programming multi-processor and high-availability applications. This book will teach you functional programming with the help of Scala. The book takes a thought-leadership approach, gently introducing you to functional programming and taking you all the way to becoming a master at the paradigm. Beginning with an introduction to functional programming, the book gradually moves forward teaching you how to write declarative code, making use of functional types and values. After covering the basics, we will discuss the more advanced concepts in functional programming.
We will cover the concepts of pure functions and type classes, problems they aim to solve, and how to use them in practice. We will see how libraries can be used for purely functional programming. We will look at the broad family of libraries for functional programming. Finally, we will discuss some of the more advanced patterns in the functional programming world, such as Monad Transformers and Tagless Final. After covering the purely functional approach to programming, we will look into the subject of parallel programming. We will introduce the Actor model and how it is implemented in the modern functional languages. By the end of this book, you will have mastered the concepts entailing functional programming alongside OOP to build robust applications.