This book is actively maintained. If you find errors, please let me know.
In this book we will implement a simple static blog generator in Haskell, converting documents written in our own custom markup language to HTML.
- Implement a tiny HTML printer library
- Define and parse our own custom markup language
- Read files and glue things together
- Add command line arguments parsing
- Write tests and documentation
In each chapter of the book we will focus on a particular task we wish to achieve, and through the chapter we'll learn just enough Haskell to complete the task.
There are many Haskell tutorials, guides and books out there. Why read this one?
There are probably more, but here are a few possible pros:
- It is relatively short - most Haskell books are hundreds of pages long. This book (when exported to PDF) is roughly 200 pages long.
- It is project oriented. Many Haskell books teach Haskell by teaching the underlying
concepts and features in a neat progression. In this book we build a Haskell program,
and learn Haskell on the way. This will be a pro to some, and a con to others.
There are other tutorials like this. The most notable ones are Beginning Haskell and Haskell via Sokoban.
- It touches on important topics such as design patterns, testing and documentation.
- It has many exercises as well as solutions to those exercises.
- It's online, which means corrections are easy to make.
- It's free.
There are probably more, but here are a few possible cons:
- It may lack depth - many, much longer Haskell tutorials are long because they go deeper into the nuts and bolts of each feature, and I tried to keep this book relatively short.
- It may not cover as many features or techniques as other tutorials - we try to cover features as they pop up in our implementation, but we will probably miss features that aren't as important for our tasks, while other resources may try to cover many different use cases.
- It is relatively new and not "battle-tested". Who knows if this is a good approach to learning Haskell? Maybe you could help with that and let me know!
- It does not have a technical editor, though it has seen quite a bit of editing.