Here are two blog posts on free monads that should be accessible for people who understand what a monad is and are able to read Haskell:
http://www.haskellforall.com/2012/06/you-could-have-invented...
http://www.haskellforall.com/2012/07/purify-code-using-free-...