有时,我将代码写入文件只是为了检查它是否编译 - 对生成的二进制文件不感兴趣。
例如,如果我正在做一个学习练习,想要产生一些错误,或者查看某些代码是否编译没有错误,我希望看到普通编译输出打印到终端,但不生成通过运行ghc <myprogram>.hs
出现的 *.hi 或 *.o 文件。
我有时使用runhaskell
有效地做到这一点,但这并不理想——它需要一个main
函数,并且实际运行程序,而我只是在寻找编译检查。
运行GHC时有没有办法抑制生成,只显示普通的编译错误和警告?
这个问题的答案之一提出了我正在寻找的答案:ghc 选项-fno-code
。
即编译但不生成二进制文件:
$ ghc -fno-code <myprogram>.hs
本着与问题目的相同的精神,除了@mherzl的工作答案外,我的回答如下:
while true;do
inotifywait -e modify myprogram.hs
ghc -fno-code myprogram.hs
done
这仅适用于具有inotifywait
工具的 Linux 系统。它会阻止检测文件是否已被修改。