template haskell: splices
generic programming: constructors list
string interpolation versus AST construction