如何在Haskell(GHC)中启用死代码警告

时间:2014-09-03 16:17:40

标签: haskell ghc

某些语言(如Go& Rust)要求程序员努力从源中删除所有死代码。这对代码可维护性和可读性有好处,如果对某些用户来说有点极端。

如何在Haskell中启用此功能? (有可能吗?)例如,在以下代码中,我希望将url2标记为死代码,因为它未在main中使用。

url1 = "http://stackoverflow.com"
url2 = "http://stackexchange.com"

main = print url1

我看到了一些编译器标志的引用(例如-fwarn-unused-binds-fwarn-name-shadowing-fwarn-hi-shadowing),但它们似乎都没有达到我想要的效果。

1 个答案:

答案 0 :(得分:17)

如果您适当地限制模块的导出列表,GHC会将url2报告为-fwarn-unused-binds的死代码,例如:

module Main(main) where
...

如果您的模块标题只是

module Main where

然后您隐式导出所有内容,因此不能将任何顶级绑定视为未使用。