4
我已經編寫了一個小工具來擴展Haskell模塊中的所有TH接頭,這樣即使TH不可用,我也可以使用haskell模塊。爲此,我在編譯模塊並捕獲結果代碼時將-ddump-splices
選項傳遞給GHC,然後用捕獲的代碼替換模塊中的TH聲明。我可以依靠模板Haskell擴展(使用-ddump-splices)來始終生成有效的代碼嗎?
但是,它看起來像-ddump-splices並不總是生成可編譯的代碼。具體來說,它似乎使用大括號的佈局,但沒有在正確的地方添加分號!
這裏是我的測試文件的例子 -
case dispatch_a3Tg pieces0_a3Tf of {
Just f_a3U6
-> f_a3U6
master0_a3T9
sub0_a3Ta
toMaster0_a3Tb
app4040_a3Tc
handler4050_a3Td
method0_a3Te
Nothing -> app4040_a3Tc }
這產生的打開和關閉括號而不是兩個案件之間的替代品所需要的分號。這會導致下面的錯誤在編譯時 -
GHCi, version 7.4.1: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
[1 of 1] Compiling Main (Test.hs, interpreted)
Test.hs:51:17: parse error on input `->'
Failed, modules loaded: none.
Prelude>
什麼是TYB? Temecula青年棒球? –
我在編輯中添加了一個鏈接,並且很想嘗試使用{[h](http://www.haskell.org/hoogle/?hoogle=tyb),[g](https:// www .google.com /查詢q =哈斯克爾+ TYB)} oogle。這並不是一個糟糕的問題,只是指出在Haskell Sun下hoogle是多麼有用是一種習慣。 –
GHC功能請求:http://hackage.haskell.org/trac/ghc/ticket/5016。這是不太可能在不久的將來修復。 – sdcvvc