Haskell Cabal包 - 找不到Paths_模块

时间:2014-02-05 21:05:48

标签: haskell cabal

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

看起来你可以使用自动生成的Path_<package_name>模块使用Cabal。所以在我的示例中,该包被称为new-website,因此该模块应该被称为Paths_new_website

Link to Cabal docs re: a custom package's Paths_pkgname module.

从命令行使用cabal repl,我正在尝试确认我可以访问Paths_模块。但是,我发现在运行Paths_new_website时Cabal没有导入cabal_repl模块。

Here's a link to some relevant code and terminal output via a gist.

有没有人有这方面的经验,让我的包加载一个挑剔的Paths_模块?我怀疑这可能是Main.hs(主要源文件)与cabal_repl中的上下文之间的词汇范围问题...

1 个答案:

答案 0 :(得分:4)

Paths_*模块仅在构建期间由Cabal生成。如果您使用GHCicabal repl运行程序包,则它们将不存在,并且您的代码将因“无法找到模块”错误而失败。

但是有一个偷偷摸摸的开发模式技巧:只需构建自己的Paths_*模块并将其放在haskell-source-dir中。在开发期间,GHCi将加载该模块,您可以调整其导出的符号以使您的开发环境飞起来。在构建期间,Cabal将使用自己的模块覆盖您的模块,并考虑构建Paths_*模块所需的最终信息。

因此,在这种特殊情况下,只需创建一个文件src/Paths_stackbuilders.hs并为其提供datadir的相对路径。