在Haskell中,包含模块的模块名称和文件名必须相同。问题不仅在于文件名,还包括所有路径,因此您必须(AFAIK)创建一个与模块层次结构相匹配的目录结构,这有点烦人。
例如,假设我在一个模块M中编写数据类型D,我认为它应该在Database中。模块名应该是Database.M.T。由于我的主目录已经被称为M(包的名称),所以我的目录结构如下:
M:
|
+-- Database:
|
+-- M:
|
+ A.hs你能这样做吗?
M:
|
+ A.hs并将M输出为Database.M?
发布于 2014-06-15 09:56:57
这在目前是不可能的,除非使用符号链接或类似于指向Database.M到M,这将在可移植性和版本控制方面出现各种问题。
Simon在几个月前为GHC提出了一个新的选项来增加对别名的支持:http://www.haskell.org/pipermail/glasgow-haskell-users/2014-April/024920.html
他的想法是,您可以使用ghc选项的新变体来运行-i:
ghc -iDatabase.M=M然后,M文件夹中的任何内容都将被视为Database.M的一部分。
您还可以将新选项放在hs-source-dirs字段中的.cabal文件中。
然而,人们对这项建议有各种各样的反对意见,所以他暂时撤回了它。主要的问题是它增加了复杂性,其他几个工具(例如cabal)也需要修改以支持它。
https://stackoverflow.com/questions/24228157
复制相似问题