16 Best Haskell Books
The best Haskell books, ranked by how many expert sources recommend each one, with guidance for beginners, working programmers and readers exploring advanced topics.
Our take
Haskell books teach more than a new syntax. Pure functions, lazy evaluation and a strong type system change how you break problems into pieces and check that those pieces fit. The right starting point depends on whether you are learning programming itself, bringing experience from another language, or trying to turn basic Haskell knowledge into working software.
Haskell from the Very Beginning and Programming in Haskell offer structured introductions. Get Programming with Haskell gives experienced programmers short lessons and practical exercises, while Thinking Functionally with Haskell emphasizes mathematical reasoning. For application work, Effective Haskell and Haskell in Depth connect language features with larger programs. More specialized books focus on web development, design or concurrency; older titles can still explain lasting ideas even when their library examples need adjustment.
Start with one introductory course, write its exercises, then choose a specialist book when you have a concrete problem to solve.
16 books · 7 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 you're new to programming: Haskell from the Very Beginning → Programming in Haskell
If you already program: Get Programming with Haskell → Effective Haskell
If you want mathematical reasoning: Thinking Functionally with Haskell
If you want application design: Haskell in Depth → Functional Design and Architecture
If you need concurrency: Parallel and Concurrent Programming in Haskell
The 16 books, ranked
Ranked by how many expert sources name each book. Ties go to the book more people recommend.
For programmers who want a playful first encounter with functional thinking. Illustrations and informal explanations soften the unfamiliar abstractions, though readers who need substantial exercises or complete application projects should pair it with another course.
What it's about
Miran Lipovaca introduces Haskell with humorous illustrations and imaginative code examples. Beginning with syntax, recursion and types, the guide develops lazy evaluation, modules, input/output, functors and monads while explaining the foundations of functional programming.
Get Programming with Haskell
For programmers who learn by making small working programs. Its short lessons give you more frequent practice than the theory-led introductions, though the pace still assumes you know the basics of another language.
What it's about
Will Kurt teaches Haskell through short lessons, illustrations, exercises and practical projects. Designed for programmers familiar with another language, the guide develops functional thinking, types, modules and testing before applying them to everyday programming tasks.
Haskell in Depth
For programmers who know the syntax and want to build larger applications. It connects advanced language features with development practices more directly than the introductory texts, though it is a demanding choice for a first course.
What it's about
Vitaly Bragilevsky guides programmers beyond Haskell's basics toward application development. Advanced types, concurrency, data processing, project organization, error handling and testing connect with practical libraries and design patterns for building and maintaining substantial software systems.
Parallel and Concurrent Programming in Haskell
Techniques for Multicore and Multithreaded Programming
For Haskell programmers working on multicore computation or applications with many simultaneous tasks. Its focused treatment makes parallelism and concurrency easier to distinguish, though it assumes language fluency and some older library examples need checking.
What it's about
Simon Marlow explains how Haskell supports parallel computation and concurrent applications. Runnable examples develop techniques for multicore processors, arrays, GPU computation, threads and network servers, extending to distributed programs operating across multiple machines.
For experienced programmers who want practical reasons to learn Haskell. Its broad applications connect language concepts with real programming tasks, though many library examples date from 2008 and need updating before use.
What it's about
Bryan O'Sullivan, John Goerzen and Donald Stewart introduce Haskell through practical programming problems. A brisk grounding in functional techniques leads to input/output, data handling, performance and concurrency, applying the language to scripts and larger applications.
For programmers who understand ideas best through a continuing project. The web-store example gives unfamiliar abstractions a practical setting, though the pace is brisk and the older development tools may require adaptation.
What it's about
Alejandro Serrano Mena introduces Haskell through a project built around a web storefront. Functional programming concepts connect with libraries and tools for testing, streaming, distributed computing and web development, alongside techniques for creating domain-specific languages.
For Haskell programmers who specifically want to build with Yesod. Its focused examples show how types shape web development, though it is a framework guide and older APIs should be checked against current documentation.
What it's about
Michael Snoyman introduces type-safe web development with Haskell and Yesod. Examples including a blog, wiki and JSON service illustrate forms, templates, widgets and persistence, moving from the framework's foundations toward complete web applications.
Functional Design and Architecture: Examples in Haskell
For programmers who can write Haskell but need to organize a larger system. It concentrates on architecture, interfaces and testing beyond the introductory books, though the design vocabulary and substantial examples demand prior language experience.
What it's about
Alexander Granin develops approaches to designing applications in functional languages, using Haskell examples. The book covers interfaces, services, concurrency, domain modeling and testing, showing how functional techniques can structure larger software systems and manage complexity.
Haskell Design Patterns
For programmers moving from basic syntax toward reusable functional designs. It explains idioms through the problems they solve, though readers looking for familiar object-oriented pattern recipes will need to adjust their expectations.
What it's about
Ryan Lemmer explores Haskell idioms through higher-order functions, types and lazy evaluation. Executable examples connect streaming, composition, functors, monads, lenses and generic programming, explaining patterns in their historical context and the problems they address.
For programmers who want to connect functional concepts with everyday development tasks. Its breadth helps bridge introductory study and practical software, though covering databases, testing and concurrency leaves less room for a slow introduction to each.
What it's about
Alejandro Serrano Mena presents Haskell through practical programming projects and its supporting ecosystem. Monads, laziness and resource management connect with testing, databases, web applications and parallel programming, showing how functional patterns apply to working software.
Thinking Functionally with Haskell
For readers who enjoy deriving programs rather than learning through application frameworks. Bird makes equational reasoning central to programming decisions, but the mathematical approach asks for more patience than the project-led introductions.
What it's about
Richard Bird introduces functional programming by teaching mathematical reasoning about Haskell programs. Equational laws and calculational techniques help readers understand what programs do and transform them, connecting clear reasoning with improvements in program efficiency.
Effective Haskell: Solving Real-World Problems with Strongly Typed Functional Programming
For programmers who want a practical route from Haskell basics to substantial applications. It gives language features a working context, though its broad progression requires more sustained coding than a quick introductory guide.
What it's about
Rebecca Skinner teaches Haskell through programs that develop from basic functions to practical applications. The book connects types, input/output, testing, performance and advanced language features with techniques for writing and maintaining functional software.
For students who want a substantial course in functional programming, including disciplined testing and larger examples. Its teaching structure offers more practice than a quick overview, though working through the full text takes sustained effort.
What it's about
Simon Thompson introduces functional programming through Haskell, moving from basic ideas to abstraction and larger programs. Case studies, exercises and testing techniques emphasize disciplined problem solving and the development of reusable software components.
Haskell Data Analysis Cookbook
For programmers who already know Haskell and want examples for data work. The recipe format makes individual techniques easy to find, though it is less coherent as a first course and older dependencies may need updating.
What it's about
Nishant Shukla presents practical Haskell recipes for acquiring, analyzing and visualizing data. Examples cover files, databases, statistics, tree and graph algorithms, clustering and parallel computation, connecting functional programming techniques with common data analysis tasks.
Haskell from the Very Beginning
For complete beginners who want short chapters and help checking their work. Worked answers make independent study more manageable, though the deliberately introductory scope leaves application architecture and advanced types for later reading.
What it's about
John Whitington introduces Haskell without assuming previous programming experience. Short chapters develop functions, lists, data types, trees, laziness and input/output, with exercises, worked answers and hints guiding readers toward building larger functional programs.
Programming in Haskell
For readers who prefer a compact course with exercises and a clear progression. Hutton builds functional programming from first principles, but the concise explanations reward active problem solving more than passive reading.
What it's about
Graham Hutton introduces functional programming from first principles, assuming no prior programming experience. Basic Haskell concepts lead into advanced features, including applicative and monadic types, with examples, exercises and selected solutions supporting the progression.
Sources
- 1
Haskell Books
extrema.is
- 2
Top 10 Books To Learn Haskell Programming
whatpixel.com
- 3
15 Resources to Help You Learn Haskell in 2023
serokell.io
- 4
What is your favourite Haskell book?
reddit.com
- 5
Recommend books like real world haskell
reddit.com
- 6
Onboarding Guide for Haskell Learners
committees.docs.intersectmbo.org
- 7
Software Design in Haskell
github.com
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.