Haskell包 - 依赖树

时间:2015-04-23 09:22:21

标签: haskell cabal

在java - maven构建工具中,您可以使用命令打印任何package/project的依赖树,

mvn dependency:tree -Dverbose -Dincludes=commons-collections

和输出将是artifacts/dependencies的树结构,

[INFO] [dependency:tree]
[INFO] org.apache.maven.plugins:maven-dependency-plugin:maven-plugin:2.0-alpha-5-SNAPSHOT
[INFO] +- org.apache.maven.reporting:maven-reporting-impl:jar:2.0.4:compile
[INFO] |  \- commons-validator:commons-validator:jar:1.2.0:compile
[INFO] |     \- commons-digester:commons-digester:jar:1.6:compile
[INFO] |        \- (commons-collections:commons-collections:jar:2.1:compile - omitted for conflict with 2.0)
[INFO] \- org.apache.maven.doxia:doxia-site-renderer:jar:1.0-alpha-8:compile
[INFO]    \- org.codehaus.plexus:plexus-velocity:jar:1.1.3:compile
[INFO]       \- commons-collections:commons-collections:jar:2.0:compile

那么,我怎样才能使用cabal为haskell包做同样的事情?

2 个答案:

答案 0 :(得分:16)

可以使用ghc-pkg生成包含所有已安装软件包的图表,例如

ghc-pkg dot | tred | dot -Tpdf >pkgs.pdf

请注意,graphviz包提供了treddot计划。

答案 1 :(得分:2)

对于已安装的软件包,您可以使用ghc-pkg找到依赖项。对于名为text的包,您必须执行以下操作:

$ ghc-pkg field text depends
depends: array-0.5.0.0-470385a50d2b78598af85cfe9d988e1b
         base-4.7.0.2-bfd89587617e381ae01b8dd7b6c7f1c1
         bytestring-0.10.4.0-d6f1d17d717e8652498cab8269a0acd5
         deepseq-1.3.0.2-63a1ab91b7017a28bb5d04cb1b5d2d02
         ghc-prim-0.3.1.0-a24f9c14c632d75b683d0f93283aea37
         integer-gmp-0.5.1.0-26579559b3647acf4f01d5edd9491a46

对于任何工作项目,您只需要查看cabal文件上的depends字段以确定它的依赖性。