所以我一直在使用Cabal在Haskell中安装软件包。我无法看到大多数这些文档(一般来说),而且我被告知学习haskell的最好方法之一就是阅读包中的代码,弄清楚它的作用,然后玩它在GHCi或其他东西。但是你怎么做的?将这些软件包安装到沙箱或其他东西后,我甚至看不到模块名称是什么,更不用说它们的源代码 - 我如何找到这些信息?
答案 0 :(得分:6)
我通常会在https://hackage.haskell.org/package/nameOfPackage
在线查找Hackage包的文档。它(除非破坏,发生了唉)链接到每个模块的文档,以及指向其中的源代码的链接。
编辑破碎的文档:
不幸的是,Hackage的doc构建系统有时会因任何原因而失败,通常会导致模块列表只是纯文本而没有链接。在这种情况下,一个好主意是查看旧版软件包版本的链接列表:通常其中一个版本有效。
还有一些问题,即某些图书馆根本没有很好的文档记录,在这种情况下,你得到的只是类型声明,类型签名和指向源的链接。 (但请查看包首页上是否有指向其他文档的链接。)
答案 1 :(得分:3)
查看任何文档
cabal haddock
命令将为您构建文档并将其放在dist/doc
中。如果您使用--enable-documentation
(或在documentation: True
中设置~/.cabal/config
),cabal install
也会为~/.cabal/share/doc
中的所有包编译文档。您可能还想在--hyperlink-source
的{{1}}部分中使用hyperlink-source: True
或设置haddock
。
阅读包中的代码
您可以~/.cabal/config
一个包来获取源代码。对于包cabal unpack
版本foo
,默认情况下,源将放在名为x.y
的目录中。
在GHCi中玩它
获得包源后,您可以导航到该目录并运行foo-x.y
以获取加载了所有包模块的ghci实例。
查看模块名称是什么
此处cabal repl
的{{1}}部分会引起您的兴趣。安装软件包后,您还可以使用Modules:
来获得类似的功能。 (这里的主要区别是关于哪些软件包已知; cabal info
将知道Hackage上的内容/您配置ghc-pkg describe
要使用的任何软件包存储库,即使软件包尚未安装,cabal info
{1}}将了解您已安装的任何软件包,即使该软件包不是来自Hackage。)