我的具体问题是:我在一个大的Haskell项目中遇到了throwT
中的Module.hs
名称。我想知道throwT
的作用。我最终成功地将这一点想象如下:
:load Module.hs
后跟:i throwT
throwT :: Monad m => e -> Control.Monad.Trans.Either.EitherT e m r
-- Defined in ‘Data.EitherR’
Data.EitherR
errors
,其中指向包ghc-pkg list errors
errors-1.4.7
提供{{1}} 有没有更好的方法来做到这一点,从更精确的意义上讲(步骤3不是),而且不那么乏味?
答案 0 :(得分:7)
您可以使用ghc-pkg find-module
代替list
,它会立即为您提供包含该模块的软件包的安装版本:
:load YourModule.hs
,获取价值<{1}} :info
一起使用。这仍然迫使您检查hackage文档。但是,如果您将ghc-pkg find-module
添加到您的cabal配置或documentation: true
,cabal将在安装给定包期间自动构建文档。然后你可以将程序缩短到
--enable-documentation
,获取价值<{1}} 本地文档将存储在您的cabal目录中,如果您位于沙箱中,则存储在:load YourModule.hs
中。
答案 1 :(得分:1)
理想情况下,每个模块都会显式导入它使用的每个函数。假设在throwT
中使用Module.hs
但未在其中定义,首先要检查的是Module.hs
顶部是否有明确导入函数的import语句,看起来像import Some-Module (throwT, someOtherFunction, possiblyAnotherFunction)
,其中Some-Module
是要导入的模块,括号内的函数是从该模块导入的唯一内容(这是显式导入的内容)。然后,您会找到Some-Module
并查找throwT
的定义。