Free Monads are an alternative to the Monad Transformer design pattern. Using free monads, a programmer can create flexible, extensible programs by assembling larger monads from primitive ones without the static, inflexible designs of monad transformers.