如何找到提供import的库?

10

我加入了一个项目,对于代码库是新的。我对一个被用在代码库中但从依赖项导入的模块很感兴趣。这个模块在项目中没有定义。

有没有自动/简单的方法来找出提供我感兴趣的模块的库呢?很多依赖是专有的,hoogle 无法帮助我解决这个问题。

1个回答

12
您可以使用ghc-pkg find-module命令:
$ ghc-pkg find-module Data.List
/opt/ghc/8.10.1/lib/ghc-8.10.1/package.conf.d
    base-4.14.0.0
/home/simon/.ghc/x86_64-linux-8.10.1/package.conf.d
    (no packages)

在使用自己的包数据库的stack项目中,你需要将命令包装在stack exec内:

$ stack exec -- ghc-pkg find-module Data.Fix
/home/simon/.stack/programs/x86_64-linux/ghc-8.6.5/lib/ghc-8.6.5/package.conf.d
    (no packages)
/home/simon/.stack/snapshots/x86_64-linux/0d371d66c37115ac97bac3fbbc5cc7b3718e197710ba11b06c7e9d7fcf441a3f/8.6.5/pkgdb
    data-fix-0.2.0
/home/simon/src/dhall-haskell/.stack-work/install/x86_64-linux/0d371d66c37115ac97bac3fbbc5cc7b3718e197710ba11b06c7e9d7fcf441a3f/8.6.5/pkgdb
    (no packages)

我不确定如何在 cabal 项目中最好地使用 ghc-pkg


1
ghc-pkg find-module Data.List -f ~/.cabal/store/ghc-$version/package.db 是一个起点,但如果已安装多个版本的同一库,则会打印出这些版本。 - HTNW

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接