Haskell 哈斯凯尔阴谋集团包-can';找不到路径\模块

Haskell 哈斯凯尔阴谋集团包-can';找不到路径\模块,haskell,cabal,Haskell,Cabal,我正在从事一个Haskell项目(Happstack服务器+Blaze HTML/前端作为主库),我想添加一个静态数据目录 看起来您可以使用自动生成的路径模块对Cabal执行此操作。因此,在我的示例中,这个包被称为new-website,因此模块应该被称为Paths\u-new\u-website 从命令行并使用cabal repl,我试图确认我将有权访问路径模块。但是,我发现在运行Cabal\u repl时,Cabal没有导入path\u new\u网站模块 有没有人有过这样的经验,在我的

我正在从事一个Haskell项目(Happstack服务器+Blaze HTML/前端作为主库),我想添加一个静态数据目录

看起来您可以使用自动生成的
路径
模块对Cabal执行此操作。因此,在我的示例中,这个包被称为
new-website
,因此模块应该被称为
Paths\u-new\u-website

从命令行并使用
cabal repl
,我试图确认我将有权访问
路径
模块。但是,我发现在运行
Cabal\u repl
时,Cabal没有导入
path\u new\u网站
模块


有没有人有过这样的经验,在我的包中加载一个挑剔的路径模块?我怀疑这可能是
Main.hs
(主要源文件)与
cabal\u repl
中上下文之间的词法范围问题。

路径*
模块仅由cabal在构建期间生成。如果您使用
GHCi
cabal repl
运行包,则它们根本不存在,您的代码将失败并出现“找不到模块”错误

不过,有一个偷偷摸摸的开发模式技巧:只需构建自己的
路径*
模块,并将其放在
haskell源目录中。在开发过程中,
GHCi
将加载该模块,您可以调整其导出的符号以使您的开发环境正常运行。在构建过程中,Cabal将用自己的模块覆盖您的模块,并考虑构建
路径*
模块所需的最终信息


因此,在这种特殊情况下,只需创建一个文件
src/Paths\u stackbuilders.hs
,并为其提供一个到
datadir

的相对路径,您是否在编译或加载到GHCi时遇到问题?Cabal在构建期间只生成这些
路径*
模块。(编辑:哦,刚刚看到,
cabalrepl
)@J.Abrahamson谢谢你!事实证明,我只需要在
Main.hs
内部执行
导入路径(其中
*
.cabal
构建文件中的包名)。cabal文档使得我似乎只需要在
其他模块下的
文件中添加
路径*
,我就可以自动访问
路径*
模块。不是这样!事实上,即使没有添加到我的
.cabal
文件中,当你说“在构建期间”时,我也能够将自动生成的
路径导入
Main
@J.Abrahamson中,据我所知,
cabal repl
正在执行一个构建-对吗?你也可以执行
ghci-idist/build/autogen
我按照你建议的方式尝试了,使用了一个手写的插入式假模块。但是
cabalbuild
使用了假模块,没有覆盖或超播它(cabal1.18)为什么
cabal repl
编译
路径\u pkgname.hs
如果它在repl内部不可用?如果使用
堆栈构建
,则执行
:set-i.stack-work/dist/x86\u 64-linux-tinfo6/cabal-2.4.0.1/build/autogen
或将其包含在命令行(或.ghci)中。如果
stack exec ghci
会自动包含这一点,这将是可取的。