Functional programming is a lot of fun for rapid prototyping and scaling new ideas. But it’s also difficult to study if you’re brand new to the field.
Devs with procedural programming knowledge will have an easier time getting started, but once you get moving this can be a lot of fun. Haskell is one of the more interesting functional languages and if you have the temerity to learn I guarantee you’ll enjoy what Haskell can offer.
But where do you get started? Well in this post I’ve outlined the ten best books for studying Haskell from step one. This collection includes books for absolute beginners, intermediate developers, and more advanced programmers to ideally suit everyone’s needs.
This may be the ultimate learning guide to Haskell if I’ve ever seen one. First published in 2008, this book still holds up to this day with over 700 pages of intro tutorials & guides for beginners.
Real World Haskell takes you through functional programming step-by-step with real exercises to guide you along the way. But you don’t just learn how to write Haskell code; you learn how to think like a functional programmer in the means of building Haskell applications.
You can pick this up as a complete novice to Haskell and still walk away with solid knowledge. However you do need some general understanding of programming concepts like variables, functions, and classes.
Since this is a huge book you’ll be learning a little bit of everything from regular expressions to network coding and web/desktop app development. This is easily one of the best introductory guides to Haskell with a no-nonsense approach to teaching.
Perhaps the funniest programming book on the market, this is one of the best intros to Haskell you’ll find. The author’s clever use of illustrations and gag humor make this an enjoyable read. The writing style is very approachable and Haskell concepts are introduced in a playful yet educational manner.
Learn You a Haskell for Great Good! starts with the absolute basics of Haskell and moves you through each feature with prominence. You’ll eventually learn to create your own programs from scratch with type classes and modules.
Some knowledge of imperative/procedural programming will help you through this book a lot quicker. It is possible to work through the examples without any programming knowledge, although it will take you much longer than other people.
I’m a huge fan of this book for the playful nature, awesome illustrations, and humorous pop culture dialogue accompanied by witty banter. The book spans 360 pages and it actually somehow makes learning Haskell a fun adventure.
Functional programming isn’t an easy topic to break into. And starting with Haskell can be even more complex, unless of course you have the right study materials.
Haskell: The Craft of Functional Programming is a 600-page compendium currently in its 3rd edition. I think this is one of the best primers on functional programming walking you through the absolute basics into more advanced topics.
It can take months or even years to fully comprehend Haskell. It has many applications but requires rigorous tenacity to make it through. This is the reason I like this book specifically for its value in teaching functional programming starting with the basics.
You can pick up this book with no prior knowledge and make it through just fine. But be warned that it will take hours of dedicated practice and the more challenging parts can be incredibly frustrating.
Studying from project-based work allows you to see how Haskell behaves in a real-world setting. Beginning Haskell: A Project-Based Approach breaks down Haskell into a process of step-by-step learning that just makes sense.
You still learn all the theoretical concepts like arrows and monoids. But you learn them in a way that’s pragmatic. You can pick up this book with zero Haskell experience and still walk away with a good understanding of functional programming.
All three major OS environments are covered and you can use any IDE of your choosing. The author does assume some familiarity with general programming concepts, although it’s rather unlikely that someone would pick up Haskell as their very first language.
While this book does move fast it’s also very thorough. I’d highly recommend this to anyone that has some functional or procedural programming knowledge and is willing to learn Haskell from a project-based practice regimen.
Thinking Functionally with Haskell is another functional programming book that introduces eager students into the world of Haskell. You learn how to write functional code the right way with an emphasis on mathematical models.
With over 100 different exercises you’ll be able to learn all the finer points of Haskell development. You get to build a neat Sudoku puzzle solver and an equational calculator from scratch.
Practical examples go a long way towards ingraining best practices into your workflow. This textbook was made for undergrad college students but can be studied by anyone willing to sit down and go to town with Haskell.
When you think of web application development you rarely think of Haskell. But with the Yesod framework it’s possible to create RESTful Haskell webapps from scratch.
If you’re willing to try Haskell on the web then consider grabbing a copy of Developing Web Apps with Haskell and Yesod: Safety-Driven Web Development.
With this book you’ll learn how to setup a new Yesod environment, create forms, handle input, and how to properly manage RESTful API content. Practical exercises force you to consider Haskell from a real-world perspective by creating a blog app and a Sphinx search server.
The products you create with Yesod/Haskell will be unique to web development. This may not be the most popular choice for a web framework, but it is fun to toy with and see what you can build.
Terse development and design patterns are a big reason that so many devs flock to functional languages like Haskell. You can accomplish so much and the workflow can be studied and applied consistently across many domains.
Haskell Design Patterns takes you one step further beyond the functional logic to help you understand how to best design your Haskell projects. This is an advanced book covering various techniques of Haskell development like imperative, Lazy, and Iteratee for I/O channels.
This book also covers the Type system in great detail explaining what makes Haskell different from other programming languages.
If you’re just getting started I would recommend a different beginner’s book(almost anything will do). Once you know a little about Haskell you can move into this book to learn more about the best practices for writing quality code.
You can never have too many cookbooks at your disposal when it comes to complex languages like Haskell. And for the size of this title I have to say you definitely get your money’s worth.
Haskell Data Analysis Cookbook only spans 288 pages yet it contains 130+ unique recipes for common Haskell problems. This book focuses primarily on logical data analysis with machine learning concepts.
Each recipe comes with an explanation and case study for how you can implement the code. These topics include statistics, data visualization, and real-time data with IRC messaging(plus a whole lot more). There are recipes in this book that I didn’t even know were possible.
As you might imagine it helps to have some background in Haskell before grabbing this book. Some of the recipes are very basic, however most of them are rather advanced and not meant for the complete novice.
But as a learning guide and a reference book I would highly recommend the Haskell Data Analysis Cookbook.
This might be the newest Haskell title on the market and it’s one of the few advanced Haskell books out there. Haskell High Performance Programming teaches you how to build fast applications on top of Haskell by studying compiling methods and your code performance at runtime.
You learn through real-world project scenarios that introduce certain problems and 3rd party solutions like accelerate. You learn how to study performance to find memory leaks in the program and fix them the right way. Plus the author gets into multithreading and parallel concurrent app development with various case studies.
Learning to build with Haskell is tough enough. But once you understand the basics and have a few projects under your belt you’ll be ready for more.
I think this book delivers above and beyond what any Haskell programmer would need to improve their dev process and to master a Haskell development workflow.
It’s not crazy to expect multicore programs to run on most modern computers. These programs can utilize much more CPU and memory but they also require a lot of time and patience to fully understand.
This is the value of Parallel and Concurrent Programming in Haskell. The author Simon Marlow teaches you how to connect into Haskell’s multithreading API to build powerful concurrent applications. Practical examples guide you every step of the way through this 300+ page guide to expedient Haskell development.
It may seem small but the content is very dense. You should not even consider this title until you’re comfortable building with Haskell on your own. Once you reach a point where understanding multithreading is within your reach then for sure grab a copy. You won’t be disappointed.
Haskell is not an easy language to pick up. A few of the basics can be learned in a day but to really build anything with Haskell you need to put in weeks or months of time.
These top ten books will get you where you need to go and they can all be useful to developers at varying skill levels. For absolute beginners I’d recommend Real World Haskell for its length and clear style of writing.
Once you get past that stage you can pretty much go anywhere. You can focus on data visualization, web apps with Yesod, or higher-level functional programming with multithreaded applications.