从Haskell包中学习

时间:2015-07-23 14:49:26

标签: haskell package cabal

所以我一直在使用Cabal在Haskell中安装软件包。我无法看到大多数这些文档(一般来说),而且我被告知学习haskell的最好方法之一就是阅读包中的代码,弄清楚它的作用,然后玩它在GHCi或其他东西。但是你怎么做的?将这些软件包安装到沙箱或其他东西后,我甚至看不到模块名称是什么,更不用说它们的源代码 - 我如何找到这些信息?

2 个答案:

答案 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。)