A free monad based on the Wadler/Leijen pretty printer