Look at my paws . Aren ' t they pretty . Look at them . <| sep |> I was quoting their words there . <| sep |> It could be any other Formation though <| sep |> Wow , she looks thick , but in a good healthy and attractive way . Way to go Sana . Keep eating well . <| sep |> Short answer Macros only offer a subset of the possibilities of TH they are limited to expressions , but on that subset they are nicer and safer to program with . TH can generate pretty much any syntactic construct , but it is mostly untyped manipulation of ASTs . Except for expressions , where TH offers typed quoting and splicing , just like we do . I have little experience with TH , but from what I understand it has no notion of phase , stage and a fortiori no path closures . I tried to define a power macro using a runtime square function like in my blog post . When I spliced it into a scope where square had been bound to something else , I got the following error The exact Name ' square ' is not in scope Probable cause you used a unique Template Haskell name NameU , perhaps via newName , but did not bind it If that ' s it , then ddumpsplices might be useful