我有一个小的 haskell 程序,它可以使用堆栈构建和执行。当我开始时stack ghci
我收到一条错误消息,我不明白并且无法继续。
GHCi, version 8.10.4: https://www.haskell.org/ghc/ :? for help
[1 of 3] Compiling Lib ( /home/frank/Workspace11/primo/src/Lib.hs, interpreted )
[2 of 3] Compiling YamlRead ( /home/frank/Workspace11/primo/src/YamlRead.hs, interpreted )
[3 of 3] Compiling Main ( /home/frank/Workspace11/primo/app/Main.hs, interpreted )
Ok, three modules loaded.
Loaded GHCi configuration from /home/frank/Workspace11/primo/.ghci
<no location info>: error:
module ‘main:Main’ is defined in multiple files: /home/frank/Workspace11/primo/app/Main.hs
/home/frank/Workspace11/primo/app/Main.hs
我不明白为什么相同Main
在完全相同的文件中列出两次。
我有一个有点类似的警告消息Paths_primo
这是一个已知的错误(堆栈问题#5439),我按照建议修复了see https://stackoverflow.com/questions/66579458/ghci-module-mainmain-is-defined-in-multiple-files-in-new-small-stack-init/66600663#66600663.
解决这个错误的方法是什么?我没用过stack
很多 - 我做错了什么吗?
这看起来像是一个迹象Main.hs
or Main
无意中在您的堆栈中多次列出package.yaml
,以这样的方式ghc
多次出现时会被调用。
仅使用 GHC 就可以轻松重现此错误,例如:
> echo 'main = putStrLn "hello"' > Hello.hs
> ghc Hello Hello.hs
<no location info>: error:
module ‘main:Main’ is defined in multiple files: Hello.hs Hello.hs
我会运行堆栈--verbose
并查看 GHCi 是如何被调用的,并仔细检查package.yaml
并生成 Cabal 文件。 (如果您编辑问题以包含这一点,我们也许能够提供更具体的帮助。)
我可以想到几个可能的原因,例如逐字列出Main
or Main.hs
多次(例如在exposed-modules
, other-modules
, main-is
);或诸如缺少选项值之类的交互ghc-options
字段导致后续标志被误解。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)