Spent most of yesterday reading up on Monads. I understand how they’re used in Haskell for IO but I wanted to understand more of the theory behind them.
At the highest level, Monads are used to sequence operations and simulate side effects. This allows an imperative programming style to be used. However this only takes place within the context of a Monad. Monads are useful for more than this but I’ve not gotten that far yet.
These were some of the material I worked through (though not all completed except for the 1st one):
- Monads for Functional Programming
- All about Monads
- Tackling the awkward squad
- StateMonad
- Monads for the Working Haskell Programmer
In addition to IO, working through the Parsec parser module documentation is also useful. It’s a real application of Monads and helps you connect the theory with the practicalities of working with Monads.
See more progress on: learn haskell