2
我寫了下面的功能:模板哈斯克爾 - 靜態斷言
staticAssert :: Bool -> Q [Dec]
staticAssert cond = case cond of
True -> return []
False -> fail "staticAssert failed"
基本上這個評估情況在編譯的時候,如果是假的會導致編譯錯誤。
但是,我想爲staticAssert
而不是輸出「staticAssert failed」,輸出斷言失敗的表達式。
如果你寫'$(fail「err」)',那麼錯誤將包括源文件,行和列號,例如,我得到'test.hs:8:3:err'。如果你想訪問源位置以某種自定義的方式打印它,我們'Language.Haskell.TH.location' – user2407038
對不起,你是對的。現在只是打印表達式? – Clinton
你的意思是打印'位置'的結果? '$(location >> = fail。show)'('Loc'沒有show實例,所以你必須自己編寫或派生它) – user2407038