我使用Stack 9.0作为我项目的Haskell构建系统。
我刚刚注意到,当我使用Stack编译我的Haskell项目时,所有断言都被关闭了。相比之下,在命令行执行“正常”GHC构建时,默认情况下会打开断言,除非使用-fignore-asserts
标志(link)明确关闭。
例如,这个简单的main函数无法抛出断言错误
import Control.Exception.Base
main :: IO ()
main = assert (1==2) $ print "Hello World!"
如何编辑项目的.cabal文件以打开断言?目前在我的.cabal文件中,我看到以下ghc选项
ghc-options: -threaded -rtsopts -with-rtsopts=-N
这很奇怪,因为在此列表中未明确关闭断言。
编辑:
运行Version 1.1.2 x86_64 hpack-0.14.0
后我stack --version
。特别是,我使用stack lts 9.0
与ghc 8.0.2
答案 0 :(得分:0)
尝试传入--fast标志,这将禁用优化(通过--ghc-options -O0
)并允许断言运行。