我正在编译我的程序:ghc -Wall foo.hs
我收到了一些有用的警告:
foo.hs:14:1: Warning:
Top-level binding with no type signature: main :: IO ()
现在,如果我立即重新运行ghc -Wall foo.hs
,则不会收到任何警告。如果我删除中间文件foo.o
并foo.hi
,然后运行ghc -Wall foo.hs
,警告会再次出现。
这是有意的行为吗?我可以做到始终显示警告而不必删除中间文件吗?
如果编译结果(.hi
和.o
(已经存在,那么GHC将不会重新编译.hs
。 GHC 仅在编译(或类型检查(.hs
时发出警告。
也许您可以使用ghc -fforce-recomp foo.hs
来强制重新编译。 (如果您只想进行类型检查,那么使用ghc -fforce-recomp -fno-code foo.hs
会更快,但有一些警告-fno-code
无法捕获。