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