Monads are a class of hard drugs
lambda-diode.com
lambda-diode.com
> The essence of monads is to use abstract types to enclose a mutable state
That's not really true. Many types that are monads are just data. Some trivial examples: List, Maybe, Either, Free. There are several other misunderstandings in the post.
> For one thing, when you use a monad, you get hooked to it: the type constructors of the monad start to appear in the signatures of your function.
Only if you write unmaintainable code. I wrote a full RFC 2616 HTTP server and basically every function lives inside a completely parameterized monad type `m`. All of the dependencies each function needs are injected as arguments (See http://www.haskellforall.com/2012/05/scrap-your-type-classes...).
Also these days (though not when the article was written in 2008), free monad DSLs are becoming a very popular way to abstract away this stuff (See http://degoes.net/articles/modern-fp)