如您所知,模板Haskell用於在編譯時以編程方式生成各種AST拼接。查看由模板生成的代碼的首選方法Haskell
但是,拼接通常可能非常不透明,並且通常很難辨別拼接實際產生的內容。如果您運行拼接單元的Q
monad,並且拼接格式良好,則會生成AST的生成片段,但由於其非結構化佈局,此表示形式可能非常難以理解。
將一段TH生成的AST轉換爲類似於正常Haskell代碼的首選方法是什麼,以便可以輕鬆讀取和理解代碼?是否可以重新構建源代碼給定Dec
值?是否需要閱讀GHC核心代碼?有沒有一種方法可以至少構建AST,使其變得更加可讀(除了例如pretty-show
包以外)?
是,這種輸出的正是我要找的!但是這也可以在一個程序中完成,只給出一個語法樹,還是需要調用編譯器? – dflemstr 2011-12-15 14:25:32
注意:確保在運行此操作之前刪除.hi和.o文件以獲取乾淨的版本,否則您將無法獲得任何stderr輸出。 – RussellStewart 2014-09-18 23:27:54