From Simple IO to Monad Transformers
From Simple IO to Monad Transformers is written for you if you know some Haskell, have seen a description or example of Haskell's monads, and are not yet comfortable with the concept. You are also expected to have enough math backgroundto understand that function composition makes up some kind of algebraic system.This ebook's objective is to help you develop an intuitive notion of monad that is accurate enough to be useful. You may have found this difficult to achieve because the concept is abstract and explanations are often aimed at the mathematically sophisticated. When they are not, they tend to be of the "See how to do this! Wasn't that easy?" variety.Neither approach works very well. What you need is help understanding how abstractions organize details. Contrary to popular opinion, we cannot create abstractions by ignoring details. What abstractions do is control the time and place for such thinking. Edsger Dijkstra once reacted to the top-down programming movement-which he helped start-by writing that he himself did not create programs purely from the top down. He merely organized them that way for clarity and correctness.Here the author discusses monads by looking at them from both the outside in and the inside out. The focus is on building understanding. Functors and applicative types are omitted. Those concepts can be stepping stones on the way to understanding monads but they are unnecessary with shorter approach I have chosen to use.In prioritizing clearer explanations over content the author has also omitted almost all of the monads included with Haskell. You will find plenty of documentation online for those. The monads the author has chosen to present will give you a mental model for makingsense of that documentation.Most sections have one worked exercise. It is OK if you cannot work it. Just pausing to think about it will give you a better understanding than merely reading through an example would. Read more...