独立的cabal包子集

时间:2013-03-03 14:35:47

标签: haskell cabal

给定一组cabal包,有没有办法自动计算独立包的子集?换句话说,包装的子集足以安装它们。

对于[network,parsec],答案为[network],因为network取决于parsec

对于[network,containers],答案为[network,containers],因为:

  • network不依赖containers
  • 所有network的依赖关系不依赖于containers
  • containers不依赖network
  • 所有containers的依赖关系不依赖于network

找到2个包的答案并不难。真正有趣的是找出[containers, directory, filepath, lens, xml, http-conduit, regex-posix, monad-control, unordered-containers, glib, hashable, hspec, split, aeson, attoparsec, stm, QuickCheck]的独立集。


从答案我希望有一些基于cabal库的功能,如∷ [Packages] → IO [Packages]

1 个答案:

答案 0 :(得分:1)

Cabal正在转向更像NPM的模型,这将使​​依赖性解决更加简单。每个安装的软件包都会保留其依赖项的本地副本,交换一点磁盘空间,因为安装多个全局软件包时会遇到相互独立的软件包版本控制要求。

在此模型下,安装设置的一组包==所需的包的子集。虽然一个可能是另一个的依赖关系,但每个安装的副本将保留其自己的依赖关系的本地副本,因此Cabal将不再考虑以这种方式安装的依赖关系。