首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过命令行使用hoogle搜索所有包?

如何通过命令行使用hoogle搜索所有包?
EN

Stack Overflow用户
提问于 2018-03-24 17:08:04
回答 2查看 306关注 0票数 3

我已经在本地安装了hoogle并运行了hoogle generate

如果我运行hoogle maybeToEither,就会得到:

代码语言:javascript
复制
Data.Either.Utils maybeToEither :: MonadError e m => e -> Maybe a -> m a
Either maybeToEither :: Monoid b => (a -> b) -> Maybe a -> b
Network.Haskoin.Util maybeToEither :: b -> Maybe a -> Either b a

然而,如果我使用网络搜索,我会得到更多的条目:https://hoogle.haskell.org/?hoogle=maybeToEither

有办法在本地生成相同的“数据库”吗?或者是否存在用于搜索https://hoogle.haskell.org的CLI?

根据https://wiki.haskell.org/Hoogle的说法,我应该能够运行hoogle datahoogle data all --但这似乎只是在搜索(所以可能已经过时了?)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-25 10:03:17

我试过:

代码语言:javascript
复制
$ cabal update
$ cabal install hoogle
Installed hoogle-5.0.17.2
$ hoogle generate --download
$ hoogle maybeToEither

并得到了回应:

代码语言:javascript
复制
Data.Either.Utils maybeToEither :: MonadError e m => e -> Maybe a -> m a
Data.Either.Extra maybeToEither :: a -> Maybe b -> Either a b
Extra maybeToEither :: a -> Maybe b -> Either a b
Protolude.Either maybeToEither :: e -> Maybe a -> Either e a
Agda.Utils.Either maybeToEither :: Maybe a -> Either () a
Intro maybeToEither :: () => a -> Maybe b -> Either a b

目前,web显示了6个条目,因为它已经将Data.Either.ExtraExtra条目合并为一行,因为它们引用了相同的定义。除此之外,它们是相配的。

请注意,hoogle generate根据已经下载的内容生成数据库,因此如果您每月运行hoogle generate,结果将不会改变。添加--download会迫使Hoogle重新下载。

票数 1
EN

Stack Overflow用户

发布于 2018-03-24 17:41:55

这个项目可能很有趣:https://github.com/andrevdm/bhoogle

我还编写了bash函数(依赖于jq、fzf、xclip):

代码语言:javascript
复制
hoogle_searchAndCopy() {
  wget -qO- https://hoogle.haskell.org/\?hoogle\="$1"\&scope\=set%3Astackage\&mode\=json \
    | jq -r ".[] | \"import \\(.module.name)\\n\\(.package.name)\\n--\"" \
    | fzf | xclip ;
  }

hoogle_searchAndCopy maybeToEither的结果是:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49467487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档