在GHC中,有没有一种方法可以检查编译而不实际产生输出?

时间:2017-08-06 03:34:11

标签: ghc

有时,我将代码写入文件只是为了检查它是否编译 - 对生成的二进制文件没有兴趣。

例如,如果我正在进行学习练习并且想要产生一些错误或者看看某些代码是否编译没有错误,我希望看到普通的编译输出打印到终端但是没有生成* .hi或* .o运行ghc <myprogram>.hs时出现的文件。

我有时使用runhaskell有效地执行此操作,但这并不理想 - 它需要main函数,并且实际运行程序,而我只是在寻找编译检查。

有没有办法在运行GHC时抑制生成,只显示普通的编译错误和警告?

2 个答案:

答案 0 :(得分:1)

this question的答案之一提出了我正在寻找的答案:ghc option Open High Low Close Volume Gmt time 2012-01-01 00:00:00 1.29496 1.29496 1.29496 1.29496 0.0 2012-01-01 00:05:00 1.29496 1.29496 1.29496 1.29496 0.0 2012-01-01 00:10:00 1.29496 1.29496 1.29496 1.29496 0.0 2012-01-02 00:15:00 1.29496 1.29496 1.29496 1.29496 0.0 2012-01-02 00:20:00 1.29496 1.29496 1.29496 1.29496 0.0 2012-01-02 00:25:00 1.29496 1.29496 1.29496 1.29496 0.0

即,编译但不能生成二进制文件:

-fno-code

答案 1 :(得分:1)

出于与问题的目的相同的精神,除了@mherzl提供的有效答案外,我在下面的回答:

while true;do
    inotifywait -e modify myprogram.hs
    ghc -fno-code myprogram.hs
done

这仅在具有inotifywait工具的Linux系统上有效。它会阻止检测文件是否被修改。