不会生成任何输出,因为没有主模块



我写了一个名为Test的简单模块:

module Test (main) where
main =
  putStrLn "Hello"

但是,当我尝试通过以下命令行编译它时:

ghc Test.hs -o my-program

我收到以下错误:

[1 of 1] Compiling Test             ( Test.hs, Test.o )
<no location info>: error:
    output was redirected with -o, but no output will be generated because there is no Main module.

ghc将假定main位于名为Main的模块中(如编译器所述)。

但是,ghc有一个选项-main-is您可以在其中指定main函数所在的模块的名称。因此,您可以使用以下方法进行编译:

ghc -main-is Test Test.hs -o my-program

我遇到了同样的问题,但就我而言,我是通过向测试源文件添加模块名称引起的,test/Spec.hs

module Tests where
main :: IO ()
main = hspec $ do ...

解决方案只是删除第一行:

main :: IO ()
main = hspec $ do ...

这也是使用堆栈创建项目时的默认 - 例如,stack new myproject .

相关内容

  • 没有找到相关文章

最新更新