2014-06-15 37 views
3

在Haskell中,包含模块的模块名称和文件名必须相同。 问题是,不仅是文件名,而且包含了所有的路径,所以你有(AFAIK)创建一个与模块层次匹配的目录结构,这有点烦人。导出具有不同层次结构的haskell模块

例如,假设我正在模块M中写入数据类型D,我认为这应该在Database。 模块名称应为Database.M.T。作为我的主目录已经被称为M(该包的名称)我结束了以下目录结构:

M: 
| 
+-- Database: 
    | 
    +-- M: 
     | 
     + A.hs 

这有可能只是做:

M: 
| 
+ A.hs 

并出口MDatabase.M

回答

2

目前这是不可能的,短缺使用符号链接或类似的点Database.MM这将有可移植性和版本控制的各种问题。

西蒙·马洛提出了新的选项GHC在几个月前添加支持别名:http://www.haskell.org/pipermail/glasgow-haskell-users/2014-April/024920.html

他的想法是,你可以用-i选项的新变种运行ghc

ghc -iDatabase.M=M 

,然后M文件夹中的任何内容都将视为您所需的Database.M的一部分。

您还可以将新选项放入hs-source-dirs字段.cabal文件中。

然而,对提案有各种反对意见,所以他现在就撤回了。主要问题是它增加了复杂性,还有其他一些工具(例如cabal)也必须改变以支持它。