haskell - ghci:模块'main:Main'在多个文件中定义-在新的小堆栈初始化构建ghci包中
问题描述
我尝试stack
使用 vscode 设置一个基于 Haskell IDE,并从一个使用创建的小项目开始,stack init
然后添加第二个模块src
并在package.yaml
. 它构建正常,但是当我开始时stack ghci
我有警告:
Warning: Multiple files use the same module name:
* Paths_primo found at the following paths
* /home/frank/Workspace11/primo/.stack-work/dist/x86_64-linux-tinfo6/Cabal-3.2.1.0/build/autogen/Paths_primo.hs (primo:lib)
* /home/frank/Workspace11/primo/.stack-work/dist/x86_64-linux-tinfo6/Cabal-3.2.1.0/build/primo-exe/autogen/Paths_primo.hs (primo:exe:primo-exe)
* * * * * * * *
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.
似乎autogen
与Paths_primo
(primo
是包的名称) 混淆。我究竟做错了什么?
一般问题:经过一些实验后,清理堆栈项目以“重新开始”的正确方法是什么?cabal
删除文件和stack-work
目录是正确的。stack.yaml
和'stack.yaml.lock'有什么关系?
解决方案
这似乎是Stack issue #5439中报告的无害警告,其根本原因是hpack issue #303。摆脱警告的解决方法是禁用为可执行文件生成Paths_
模块,方法是将以下内容添加到它的部分:primo-exe
package.yaml
when:
- condition: false
other-modules: Paths_primo
推荐阅读
- javascript - 配置 Javascript 范围滑块
- python - “import skimage”上的 python 错误:ImportError: DLL load failed while importing _remap
- github - 避免从 raw.githubusercontent.com 获取缓存的内容
- python - 在 Python 中删除重复的 json 结果
- nginx - NginX 服务器关闭时会发生什么?
- python - 用 Pandas 计算滚动平均值
- python - 难以理解如何正确地将 Perl 匹配转换为 Python
- python - 更改日期格式
- python - 如何使用“tensorflow.keras”构建的两层基本 CNN 算法对残差块进行编码?
- java - 如何计算地图上第二个点的坐标?