This is the book I wish I had when learning Haskell.
There are a lot of great books out there that teach you the language – but not how to actually build applications with it.
I read many Haskell books. They're great to learn about types, currying, type classes, Functors, Applicatives, Monads… but then what? I felt lost. Many times I just wanted to give up because I couldn't see how I should apply everything that I have learned in a practical way.
It's hard to tell what's considered best practice in the Haskell world. And that makes it difficult to get proficient with the language. That's why this book focuses on Simple Haskell, a subset of the language that I find strikes the right balance between features and ease of use.
In this book, we'll build a Continuous Integration Server. Why such a project? I wanted something serious enough that could pose some real challenges while developing it. No point implementing yet another blog or todo-list or similar toy applications – you're not going to learn much from those.
A CI Server is interesting for a number of reasons. The domain isn't trivial which means we'll have to put some thought into coming up with the right model. The application will have to work with external systems such as Docker containers and Github webhooks so there's plenty of lessons to learn from there.
Here's a brief list of features that Quad CI (our very own CI server!) will support:
* sandboxed builds in Docker containers * multi-node architecture with agents picking up jobs to work on * http api to interact with the frontend and other nodes * support for triggering builds with github webhooks