自动下载haskell项目的依赖项?

时间:2012-03-24 20:48:16

标签: haskell

假设我在haskell中有一个课程项目,这取决于MonadRandomhashable个包。

现在,每当我在另一台计算机上从git克隆它时,我都必须经历一个程序,就像这样:

runhaskell Main.hs
>Could not find module `Control.Monad.Random'

--Google what package Control.Monad.Random is part of... MonadRandom!
cabal install MonadRandom

runhaskell Main.hs
>Could not find module `Data.Hashable'

--Google where Data.Hashable comes from.. ok `hashable`!
cabal install hasahable

runhaskell Main.hs
> HELLO WORLD!

有没有办法简化这个,所以我只运行一个命令?例如,python的pip使用requirements

pip install -r requirements.txt

2 个答案:

答案 0 :(得分:8)

如果您为项目编写.cabal文件,则可以使用cabal configurecabal install --only-dependenciescabal build构建该文件。 (如果你只是想在当前目录中构建它;如果你想将它与所有其他Haskell软件包一起安装,那么过程就像cabal install一样简单。)

您可以从项目目录中运行cabal init开始 - 它会向您提出一系列问题,并输出一个不完整的.cabal文件,并为您填写简单的内容。

Cabal是所有Haskell项目的标准构建系统,因此您通常应尽可能早地在项目中编写Cabal文件。

另见this introduction to packaging things with Cabal

答案 1 :(得分:2)

这是您要使用Cabal的内容。为项目创建.cabal文件,然后在克隆repo后在项目根目录中运行cabal install。这将为您提供所有依赖项。

无论如何,所有大型项目都会获得一个用于构建的cabal文件,所以你现在也可以开始使用它。