无法理解错误消息-Haskell

时间:2018-10-28 14:01:03

标签: haskell

当我尝试使用cabal run测试我的代码时,出现错误消息

“没有位置信息:错误: 由于-Werror而失败。”

任何人都可以向我解释这是什么意思以及什么可能导致此错误吗?

1 个答案:

答案 0 :(得分:3)

如果您使用-Werror flag进行编译,则意味着警告被视为(致命)错误,如文档中所指定:

  

使警告致命

因此,从编译器发出警告(您可以在编译器的输出中查找警告)的那一刻起,便认为编译未成功。

通常,编译器发出的警告表示的东西看起来不正确,但就编译器可以产生二进制的意义而言,并不是致命的。例如,如果您定义一个函数,例如:

f :: Int -> Int
f x = 0

然后,Haskell可以-如果启用-Wunused-matches-发出警告,说明函数的开头的x没有在体内使用。这很奇怪,也许您忘了使用x。但是,如果不需要,我们可以使用通配符模式:

f :: Int -> Int
f _ = 0  -- no warning

一些项目因此使用它来“阻止”让这些警告不被注意。