7 Best Functional Programming Books
The best functional programming books, ranked by how many expert sources recommend each one, with notes on who they suit and which language each book uses.
Our take
Functional programming books can teach a style of reasoning as well as the features of a language. Pure functions, immutable data, and controlled side effects are easier to understand when you connect them with code you already write. Some books make that connection gently. Others ask you to build abstractions and complete exercises before the ideas become comfortable.
Grokking Simplicity is an approachable conceptual starting point, using JavaScript examples rather than requiring a dedicated functional language. Java developers can also begin with Modern Java in Action. Functional Programming in Scala provides a more rigorous exercise-based route. The other Scala books range from the concise Scala for the Impatient to the comprehensive Programming in Scala and Scala 3-focused Programming Scala. Their editions matter: older Scala 2 syntax, tools, and concurrency examples need context in a modern project. Start with functional thinking if the ideas are new, then choose a language guide or deeper exercise book according to your goal.
7 books · 5 sources · Last updated
As an Amazon Associate, we earn from qualifying purchases (at no extra cost to you).
How to choose from this list
Skip to the full rankingIf functional thinking is new to you: Grokking Simplicity
If you want to stay with Java: Modern Java in Action → Grokking Simplicity
If you want a concise Scala introduction: Scala for the Impatient
If you want Scala 3 coverage: Programming Scala
If you're ready for deeper FP exercises: Grokking Simplicity → Functional Programming in Scala
The 7 books, ranked
Ranked by how many expert sources name each book. Ties go to the book more people recommend.
Grokking Simplicity
For programmers who want functional thinking before committing to a new language. Normand uses accessible JavaScript examples to separate data, calculations, and actions, though readers seeking formal theory or advanced type systems will need a further text.
What it's about
Eric Normand introduces functional programming through everyday software examples and illustrated explanations. The book distinguishes data, calculations, and actions, then develops techniques for controlling side effects, improving composition, and making programs easier to understand and change.
Functional Programming in Scala
For programmers ready to work through functional abstractions with exercises rather than only read explanations. The second edition builds ideas from small implementations, though its rigorous progression requires patience and some comfort reading Scala.
What it's about
The second edition develops functional programming concepts through Scala examples and exercises, beginning with pure functions and immutable data. Readers build increasingly general tools for error handling, state, parallelism, and effects while connecting implementation choices with reusable abstractions.
Scala in Action
For readers maintaining older Scala applications who learn best through practical tasks. Raychaudhuri connects language features with tools and concurrency, though its Scala 2.10 ecosystem makes it a poor first choice for a new Scala 3 project.
What it's about
Nilanjan Raychaudhuri teaches Scala 2.10 through practical programming tasks and hands-on examples. The tutorial covers language features, Java libraries, build tools, testing, debugging, Akka concurrency, and techniques for creating domain-specific languages.
Programming in Scala
For programmers who want a comprehensive account of Scala's functional and object-oriented sides. The step-by-step tutorial gives language features sustained context, though this third edition targets Scala 2.12 and needs updating for Scala 3 projects.
What it's about
Martin Odersky and colleagues provide a comprehensive tutorial combining Scala's object-oriented and functional features. The third edition covers language basics, collections, types, pattern matching, Java integration, and concurrency through Scala 2.12.
For experienced programmers who want to connect functional techniques with Scala 3 application development. Wampler covers the language broadly rather than treating FP in isolation, though the dense reference-style scope is demanding for newcomers.
What it's about
Dean Wampler explores Scala's combination of functional programming and objects for application development. This third edition covers Scala 3 syntax, pattern matching, type classes, contextual abstractions, collections, and techniques for using the language effectively.
Scala for the Impatient
For programmers who already know another language and want a concise route into Scala. Horstmann moves quickly through examples and exercises, though the second edition's Scala 2.12 syntax and implicit mechanisms need translating for Scala 3.
What it's about
Cay Horstmann introduces Scala through concise examples and exercises for experienced programmers. This second edition covers Scala 2.12, progressing from language basics and object-oriented features to functional techniques, implicit classes, futures, and Java interoperability.
For Java developers who want to apply functional ideas without moving to a new language. Urma and his coauthors connect lambdas and streams with practical applications, though the wider Java coverage makes this less focused than a dedicated FP text.
What it's about
Raoul-Gabriel Urma, Mario Fusco and Alan Mycroft explain modern Java features through practical examples. Lambdas, streams, modules, concurrency and reactive programming connect functional ideas with techniques for writing clearer applications using Java 8, Java 9 and beyond.
Sources
Edited by
Software engineer whose passion for tracking book recommendations from podcasts inspired the creation of MRB.
Lead investor at 3one4 Capital whose startup expertise and love for books helped shape MRB and its growth.























Comments
Spotted a missing book, a wrong order or a mistake? Tell us and we'll fix this page.
We're a reading guide, not the author or publisher, so we can't send books or pass on messages.