如何查找Haskell名称的包,版本和文档
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何查找Haskell名称的包,版本和文档相关的知识,希望对你有一定的参考价值。
我的具体问题是:我在一个大的Haskell项目中遇到了throwT
中的Module.hs
这个名字。我想知道throwT
的作用。我最终成功地将这一点想象如下:
- 为该项目启动ghci
:load Module.hs
紧随其后的是:i throwT
throwT :: Monad m => e -> Control.Monad.Trans.Either.EitherT e m r -- Defined in ‘Data.EitherR’
- 查询hayoo for
Data.EitherR
,它指向包errors
ghc-pkg list errors
给errors-1.4.7
- 浏览hackage到该版本的错误包的文档:throwT
是否有更好的方法来做到这一点,从更精确的意义上讲(步骤3不是),而且不那么乏味?
您可以使用ghc-pkg find-module
而不是list
,它会立即为您提供包含模块的软件包的安装版本:
- 点燃GHCi
:load YourModule.hs
,得到你的价值:info
- 将给定的模块名称与
ghc-pkg find-module
一起使用。 - 您现在知道确切的模块,包和版本。
这仍然迫使您检查hackage文档。但是,如果将documentation: true
添加到cabal配置或--enable-documentation
中,cabal将在安装给定包期间自动构建文档。然后你可以缩短程序
- 点燃GHCi
:load YourModule.hs
,得到你的价值:info
- 查看本地文档以获取参考模块。
本地文档将存储在您的cabal目录中,或者,如果您位于沙箱中,则存储在.cabal-sandbox/share/doc/<plattform>/index.html
中。
理想情况下,每个模块都显式导入它使用的每个函数。假设throwT
用于Module.hs
,但未在其中定义,首先要检查的是Module.hs
顶部是否有明确导入函数的import语句,这看起来像import Some-Module (throwT, someOtherFunction, possiblyAnotherFunction)
,其中Some-Module
是模块正在导入,括号内的函数是从该模块导入的唯一内容(这是显式导入的内容)。然后你会找到Some-Module
并寻找throwT
的定义。
以上是关于如何查找Haskell名称的包,版本和文档的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Haskell 中查找和修复由于 GC 导致的性能问题?