2014-06-15 59 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)也必須改變以支持它。