簡體   English   中英

如何查找Haskell名稱的包,版本和文檔

[英]How to find package, version, documentation for a Haskell name

我的具體問題是這樣的:我碰到的名字跑throwTModule.hs在一個大項目的Haskell。 我想知道throwT作用。 我最終成功地將這一點想象如下:

  1. 為該項目啟動ghci
  2. :load Module.hs后跟:i throwT throwT :: Monad m => e -> Control.Monad.Trans.Either.EitherT emr -- Defined in 'Data.EitherR'
  3. Data.EitherR查詢hayoo ,它指向包errors
  4. ghc-pkg list errors給出errors-1.4.7
  5. 瀏覽hackage到該版本的錯誤包的文檔: throwT

有沒有更好的方法來做到這一點,從更精確的意義上講(步驟3不是),而且不那么乏味?

您可以使用ghc-pkg find-module而不是list ,它會立即為您提供包含該模塊的軟件包的已安裝版本:

  1. 點燃GHCi
  2. :load YourModule.hs ,獲取:info關於價值的信息
  3. 將給定的模塊名稱與ghc-pkg find-module
  4. 您現在知道確切的模塊,包和版本。

這仍然迫使您檢查hackage文檔。 但是,如果您添加documentation: true到您的cabal配置或--enable-documentation ,cabal將在安裝給定包期間自動構建文檔。 然后你可以縮短程序

  1. 點燃GHCi
  2. :load YourModule.hs ,獲取:info關於價值的信息
  3. 查看本地文檔以獲取參考模塊。

本地文檔將存儲在您的cabal目錄中,或者,如果您位於沙箱中,則存儲在.cabal-sandbox/share/doc/<plattform>/index.html

理想情況下,每個模塊都顯式導入它使用的每個函數。 假設throwTthrowT中使用Module.hs在其中定義,首先要檢查的是在Module.hs頂部是否有一個顯式導入函數的import語句,它看起來像import Some-Module (throwT, someOtherFunction, possiblyAnotherFunction)一樣 - import Some-Module (throwT, someOtherFunction, possiblyAnotherFunction) ,其中Some-Module是要導入的模塊,括號內的函數是從該模塊導入的唯一內容(這是顯式導入的內容)。 然后,您將找到Some-Module並查找throwT的定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM