About this book

The goal of Haskell Roguelike is to teach you how to program in Haskell. You will complete hundreds of exercises and over a dozen projects as you journey through this book. By the end, you will have a deep understanding of how to use Haskell to build real software.

Who is this for?

If you are new to Haskell, this book is for you. No programming experience is required—everything that you need to know is included in this book. The only requirement is a desire to learn and a basic understanding of high-school algebra.

What is Haskell?

Haskell is a programming language with deep roots in mathematics, specifically lambda calculus and type theory. It shares a common heritage with Lisp, but comes from a different language family called ML (Meta-Language) which is used in programming language research.

Why Haskell?

Writing Haskell is fun. It’s the best time I have ever had programming. The community consists of the most friendly, helpful, and encouraging people found anywhere. Since you are reading this book, I assume you already want to learn Haskell and don’t need any convincing. If you stick with it, you will be very pleased. It will forever change the way you think about programming.

What is a Roguelike?

The word roguelike comes from a computer role-playing game created in the 1980s called Rogue, where the game was different every time you played it, and your decisions affected how the game unfolded. It could be described as a sort of “choose your own adventure” game, but with deep, emergent gameplay. You can look at programming in the same kind of way, like a game. Haskell feels like this kind of game to me, because there are always many ways to accomplish the same goal, and there is always something new to discover that you never knew existed. The language evolves rapidly, thanks to an active development team, so even once you think you have learned everything, there is something new just around the corner.

About the author

You can contact me at eric@haskellroguelike.com


This book is dedicated to Ertugrul Söylemez (ertes on #freenode). Thank you for reading early drafts of this book, and for helping me learn Haskell when I was just starting out.