2011-10-28 35 views

回答

9

我通常把我的模塊放在同一個目錄樹中,並在樹的根目錄下啓動ghci。然後模塊可以相互導入,我可以交互地將:load模塊輕鬆地導入ghci

$ ghci 

.... loading .... 

Prelude> :load directory/subdirectory/mymodule.hs 
+0

我'ghci'是'C:\ Program Files文件(86) \ Haskell平臺\ 2011.2.0.0 \ bin'。我把它們放在這裏嗎? – Dynamic

+0

不!安裝時,應該將自己放到路徑或環境變量中,以便無論您在哪個目錄中都可以從命令行運行'ghci'。如果環境變量設置不正確,您可以通過控制面板手動更改它們。 –

+0

等等...什麼?什麼是你的電腦上有你的功能? – Dynamic

2

如果你希望你的模塊從幾個不同的項目訪問,我建議建立一個小集團包爲他們和使用cabal install安裝。發佈到hackage不是必需的 - cabal install無參數會在當前目錄中查找.cabal文件並安裝相應的包。

如果您希望您的模塊可以從單個項目訪問,那麼在分層文件夾樹中組織源代碼的常見做法也適用於Haskell。讓我給個例子:

Hello/World.hs 
Foo/Bar.hs 
Quux.hs 
Hello.hs 

Hello/World.hs應該在頭module Hello.World where。主模塊應該有module Main,但實際的文件名可以是任何東西(例如Quux.hs)。在Foo/Bar.hs中,您可以使用import Hello.World。當您在ghci中加載Foo/Bar.hs時,當前目錄應該是您的樹的根目錄,否則它將找不到Hello.World。您可以將模塊名稱而不是文件名稱傳遞給ghci:例如ghci Hello.World會工作。

下面是文檔:

http://haskell.org/ghc/docs/latest/html/users_guide/separate-compilation.html

http://haskell.org/ghc/docs/latest/html/users_guide/packages.html

+0

+1。 Cabal現在實際上非常容易使用;對於這個用例,它幾乎是完全自動的('cabal init'爲你生成一個'.cabal'文件,你只需要填寫構建依賴關係) –

相關問題