Recap
In this book, we've implemented a very simple static blog generator while learning Haskell as we go.
- We've learned about basic Haskell building blocks, such as definitions, functions, types, modules, recursion, pattern matching, type classes, IO, and exceptions.
- We've learned about EDSLs and used the combinator pattern to implement a composable html generation library.
- We've learned how to leverage types, modules, and smart constructors to make invalid states unrepresentable.
- We've learned how to represent complex data using ADTs.
- We've learned how to use pattern matching to transform ADTs, and how to use recursion to solve problems.
- We've used the functional core, imperative shell approach to build a program that handles IO and applies our domain logic to user inputs.
- We've learned about abstractions such as monoids, functors and monads, and how they can help us reuse code and convey information about shared interfaces.
- We've learned how to create fancy command-line interfaces, write tests, and generate documentation.
While Haskell is a very big and complex language, and there's always more to be learned, I think we've reached an important milestone where you can start building your own Haskell projects and be productive with Haskell!
This is a good time to celebrate and pat yourself on the back for getting this far! Great job, you!
If you'd like to learn even more about Haskell and continue your Haskell journey beyond this book, check out the appendix sections Where to go next and the FAQ.
Thank you!
Thank you for reading this book. I hope you enjoyed it and found Haskell interesting.
I would very much like to hear your feedback. If you'd like, you could leave your feedback on this book's discussion board, or you could reach me via email. You can find my contact information on my website.
If you liked this book, do let me know - your kind words mean a lot.
Finally, if you really liked this book and would like to support future passion projects like it, you can support me directly via Ko-fi.
Thank you, and good luck with your next Haskell project!