Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Preferred method for viewing code generated by Template Haskell

As you know, Template Haskell is used to generate various kinds of AST splices programmatically at compile-time.

However, a splice can often be very opaque, and it is often difficult to discern what a splice actually generates. If you run the Q monad for a splice, and the splice is well-typed, you get a showable representation of the generated piece of AST, but this representation can be very difficult to understand, because of its unstructured layout.

What is the preferred method for converting a piece of TH-generated AST into something akin to normal Haskell code, so that the code can be easily read and understood? Can one reconstruct source code from e.g. a given Dec value? Does one have to read the GHC Core code? Is there a way to at least structure the AST so that it becomes more readable (Beyond what e.g. the pretty-show package does)?

like image 409
dflemstr Avatar asked Dec 15 '11 12:12

dflemstr


1 Answers

Are you looking for the -ddump-splices flag to the compiler?

like image 112
augustss Avatar answered Sep 20 '22 17:09

augustss