2013-04-06 61 views
13

我正在關注的耶索德書,其中規定:GHC -ddump-接頭選項 - 模板哈斯克爾

但通過使用-ddump-GHC拼接選項,我們可以在產生立即得到一個 外觀碼。一個清理得很好的版本是:

我該怎麼做?我試着編譯我的ghc -XTemplateHaskell -ddump-splices Page.hs文件,這讓該目錄如下:這些文件的

Page Page.hi Page.hs Page.hs~ Page.o

然而,沒有包含由模板哈斯克爾生成的中間代碼。

http://www.yesodweb.com/book/basics

+1

新手在這裏 - 這個命令是如何使用的?如果我運行ghc(用helloworld.hs代替),我會得到「Could not find module'Yesod'」我只能使用'stack runghc helloworld.hs'編譯/運行。 – Ixx 2017-10-21 13:36:35

回答

12

與此同時,行爲更多的細節改變,-ddump-to-file標誌除了-ddump-splices標誌導致接頭被寫入到文件中,看到當前的Section 9.26(GHC 8.2.1)文檔。


在老版本的GHC的(我沒有檢查在哪個版本完全行爲改變),-ddump-splices工作是不同的:

-ddump-splices選項使GHC的接頭轉儲到stderr。不幸的是,-ddump-to-file標誌不影響接頭(我不知道是否有更深層次的原因或只是一個監督),所以你需要捕獲stderr輸出保存以供日後調查的接頭,

ghc -XTemplateHaskell -ddump-splices Page.hs 2> Page.dump-splices 

充分bash樣殼。

+1

謝謝。爲什麼它會輸出stderr而不是stdout? – 2013-04-06 13:13:27

+3

我不知道。可能有一個原因,或者它可能是歷史事故。可能需要向總部詢問答案。 – 2013-04-06 13:19:06

+1

根據https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/template-haskell.html,這已經在同一時間發生了變化。它聲稱默認轉儲爲標準輸出,'-ddump-to-file'應該轉儲到'.dump-splices'文件。 – robx 2015-05-21 18:56:15