Ale*_*oft 14 haskell program-entry-point
我写了一个简单的模块叫做Test:
module Test (main) where
main =
putStrLn "Hello"
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试通过以下命令行编译它时:
ghc Test.hs -o my-program
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
[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.
Run Code Online (Sandbox Code Playgroud)
Wil*_*sem 24
ghc将假设它main位于一个被调用的模块中Main(就像编译器所说的那样).
ghc但是有一个选项-main-is,您可以在其中指定main函数所在模块的名称.所以你可以编译:
ghc -main-is Test Test.hs -o my-programRun Code Online (Sandbox Code Playgroud)
小智 7
我有同样的问题,但就我而言,是通过在测试源文件中添加模块名称引起的test/Spec.hs:
module Tests where
main :: IO ()
main = hspec $ do ...
Run Code Online (Sandbox Code Playgroud)
解决方案只是删除第一行:
main :: IO ()
main = hspec $ do ...
Run Code Online (Sandbox Code Playgroud)
当您使用堆栈创建项目(例如)时,这也是默认设置stack new myproject。
| 归档时间: |
|
| 查看次数: |
1530 次 |
| 最近记录: |