2011-10-28 38 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'文件,你只需要填写构建依赖关系) –

相关问题