Template Haskell to generate Free Monads from Functors [Haskell]