&引用;模块[…]在多个文件中定义”;Haskell编译出错

&引用;模块[…]在多个文件中定义”;Haskell编译出错,haskell,ghc,Haskell,Ghc,当我使用-Wall选项编译时,出现以下错误 ghc -o -Wall polycake polycake.hs 当我不使用该选项时,我的代码可以很好地编译并按预期运行。这是什么意思 <no location info>: error: module ‘main:Polycake’ is defined in multiple files: polycake.hs

当我使用-Wall选项编译时,出现以下错误

ghc -o -Wall polycake polycake.hs
当我不使用该选项时,我的代码可以很好地编译并按预期运行。这是什么意思

<no location info>: error:
    module ‘main:Polycake’ is defined in multiple files: polycake.hs
                                                         polycake.hs
:错误:
模块“main:Polycake”在多个文件中定义:Polycake.hs
polycake.hs

选项
-o
期望输出文件名作为下一个参数-它不关心该参数是否以破折号开头。因此
-o-Wall
将输出文件名设置为
-Wall
(实际上不启用警告)

因此,剩下的两个参数是
polycake
polycake.hs
,它们将
ghc
解释为输入文件名。当输入文件名不存在且尚未以扩展名
.hs
结尾时,
ghc
将尝试添加该扩展名。因此,
ghc polycake polycake.hs
将尝试编译
polycake.hs
两次。这会导致你的错误


PS:输出文件名默认为不带扩展名的输入文件名,因此在这种情况下根本不需要
-o
选项。

您的命令行是什么?只是默认,mac os xNo中的bash shell,我的意思是,您使用什么确切的命令来获取该错误?ghc-o-Wall polycake polycake.hs