在使用 Haskell 的堆栈构建系统进行编译时打开断言



我正在使用Stack 9.0作为我的项目的Haskell构建系统。

我刚刚注意到,当我用Stack编译我的Haskell项目时,所有的断言都被关闭了。相比之下,在命令行执行"正常"GHC 构建时,断言默认处于打开状态,除非使用-fignore-asserts标志(链接(显式关闭。

例如,这个简单的 main 函数无法抛出断言错误

import Control.Exception.Base
main :: IO ()
main = assert (1==2) $ print "Hello World!"

如何编辑项目的 .cabal 文件以打开断言?目前在我的 .cabal 文件中,我看到以下 ghc 选项

ghc-options: -threaded -rtsopts -with-rtsopts=-N

这很奇怪,因为在此列表中尚未明确关闭断言。

编辑:

运行stack --version后我有Version 1.1.2 x86_64 hpack-0.14.0.特别是,我正在使用stack lts 9.0ghc 8.0.2

尝试传入 --fast 标志,这将禁用优化(通过--ghc-options -O0(并允许断言运行。

最新更新