Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell包-依赖关系树_Haskell_Cabal - Fatal编程技术网

Haskell包-依赖关系树

Haskell包-依赖关系树,haskell,cabal,Haskell,Cabal,在java-mavenbuild tool中,您可以使用以下命令打印任何包/项目的依赖关系树: mvn dependency:tree -Dverbose -Dincludes=commons-collections 输出将是工件/依赖项的树结构 [INFO] [dependency:tree] [INFO] org.apache.maven.plugins:maven-dependency-plugin:maven-plugin:2.0-alpha-5-SNAPSHOT [INFO] +-

在java-
maven
build tool中,您可以使用以下命令打印任何
包/项目的依赖关系树:

mvn dependency:tree -Dverbose -Dincludes=commons-collections
输出将是
工件/依赖项的树结构

[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软件包执行相同的操作?

对于已安装的软件包,您可以使用
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文件上的
dependens
字段,以确定其相关性。

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

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

请注意,
graphviz
包提供了
tred
dot
程序。

我认为在阴谋集团中没有现成的方法可以做到这一点,尽管我认为这里已经讨论过了:。hackage上有一个软件包可以帮你做到这一点:顺便说一句,为什么ghc pkg会被另一个命令
tred
作为参数?来自
ghc pkg
的数据通过
tred
过滤器传输,以删除过渡连接的节点之间的边。
|
是命令行解释器的管道。这应该是标记的答案。它是目前为止最有用的。有时候,
ghc pkg dot
本身就非常有用。尤其是当生成一个pdf时,会出现类似的情况,而这会显示直接的依赖关系,maven特性会显示完整的依赖关系树,这是一个重要的区别。这也是一件非常有用的事情,特别是考虑到阴谋集团倾向于存在与传递依赖相关的问题。