分发 Haskell 项目的推荐方法是使用Cabal。Cabal 既是 Haskell 代码的构建系统和包管理器,它可以轻松地在不同平台上构建 Haskell 代码,同时为您处理依赖关系。
这是一个示例 cabal 文件:
Name: MyPackage
Version: 0.0
Cabal-Version: >= 1.2
License: BSD3
Author: Angela Author
Synopsis: Small package an utility program
Build-Type: Simple
Executable myutility
Build-Depends: base
Main-Is: Main.hs
Hs-Source-Dirs: src
您可以通过运行以交互方式生成 cabal 文件
$ cabal init
Cabal 然后会问你一些简单的问题,并根据你的回答生成一个 cabal 文件。然后,您可以调整此文件以满足您的特定需求。
要安装你的包,只需在包目录中运行它
$ cabal install
你也可以将你的包上传到Hackage,标准的 Haskell 包存储库。这样,人们可以使用命令一步一步下载和安装你的包(和任何依赖项)
$ cabal install mypackage
如果您不想要求您的用户安装 Cabal(尽管 Cabal 包含在Haskell 平台中),也有将 Cabal 包转换为其他包管理器的工具。
它还可以很好地与Haddock一起为您的包生成参考文档。查看 Hackage 上的一些包以获取结果示例。
目前还有一些工作正在改进对 Cabal 中测试套件的支持。
总体而言,这些原因以及更多原因使得使用 Cabal 组织、构建和分发您的 Haskell 项目是一个很大的好处。