A Haskell article commonly referenced when introducing free monads
A simple tutorial about using scalaz free monads for decoupling logging
In this blog post we'll walk through the technical design of one part of a (not yet public nor completed) web application made by Futurice. The library in focus is named jobba, and is very similar to Facebook
An interesting application of free monads to regain transparential referency when querying external webservices and for caching and batching their results.
Source code for the last presentation
A nice introduction to Free Monads motivated by dependency injection,
Tail call elimination (TCE) in the Scala compiler is limited to self-recursive methods, but tail calls are otherwise not eliminated. This makes functions composed of many smaller functions prone to stack overflows. Having a general TCE mechanism would be a great benefit in Scala, particularly for functional programming. Trampolining is a popular technique, which can be used for TCE in languages that don’t support it natively. This paper gives an introduction to trampolines in Scala and expands on this solution to gain elimination of any method call whatsoever, even calls that are not in tail position at all. This obviates altogether the use of the
call stack in Scala programs.
A paper by Rúnar Òli about a common concern when using monads (stack overflow exceptions due to excessive flatMap calls) and how to deal with it using free monads
Another presentation by Rúnar Óli about using Free Monads for handling multiple concerns