如何通过命令行搜索带有 hoogle 的所有包?
How can I search all packages with hoogle via command line?
我已经在本地安装了 hoogle 并且 运行 hoogle generate
。
如果我 运行 hoogle maybeToEither
我得到:
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
有没有办法在本地生成相同的 'database'?或者是否有用于搜索 https://hoogle.haskell.org?
的 CLI
根据 https://wiki.haskell.org/Hoogle,我应该能够 运行 hoogle data
或 hoogle data all
- 但这似乎只是进行搜索(所以可能过时了?)。
可能对这个项目感兴趣:https://github.com/andrevdm/bhoogle
我也写了bash函数(取决于jq、fzf、xclip):
hoogle_searchAndCopy() {
wget -qO- https://hoogle.haskell.org/\?hoogle\=""\&scope\=set%3Astackage\&mode\=json \
| jq -r ".[] | \"import \(.module.name)\n\(.package.name)\n--\"" \
| fzf | xclip ;
}
hoogle_searchAndCopy maybeToEither
结果:
我试过了:
$ cabal update
$ cabal install hoogle
Installed hoogle-5.0.17.2
$ hoogle generate --download
$ hoogle maybeToEither
并得到回复:
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
目前网络显示 6 个条目,因为它已将 Data.Either.Extra
和 Extra
条目合并为一行,因为它们指的是相同的定义。除此之外,他们匹配。
请注意,hoogle generate
会根据您已经下载的内容生成一个数据库,因此如果您每个月 运行 hoogle generate
结果都不会改变。添加 --download
强制 Hoogle 重新下载。
我已经在本地安装了 hoogle 并且 运行 hoogle generate
。
如果我 运行 hoogle maybeToEither
我得到:
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
有没有办法在本地生成相同的 'database'?或者是否有用于搜索 https://hoogle.haskell.org?
的 CLI根据 https://wiki.haskell.org/Hoogle,我应该能够 运行 hoogle data
或 hoogle data all
- 但这似乎只是进行搜索(所以可能过时了?)。
可能对这个项目感兴趣:https://github.com/andrevdm/bhoogle
我也写了bash函数(取决于jq、fzf、xclip):
hoogle_searchAndCopy() {
wget -qO- https://hoogle.haskell.org/\?hoogle\=""\&scope\=set%3Astackage\&mode\=json \
| jq -r ".[] | \"import \(.module.name)\n\(.package.name)\n--\"" \
| fzf | xclip ;
}
hoogle_searchAndCopy maybeToEither
结果:
我试过了:
$ cabal update
$ cabal install hoogle
Installed hoogle-5.0.17.2
$ hoogle generate --download
$ hoogle maybeToEither
并得到回复:
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
目前网络显示 6 个条目,因为它已将 Data.Either.Extra
和 Extra
条目合并为一行,因为它们指的是相同的定义。除此之外,他们匹配。
请注意,hoogle generate
会根据您已经下载的内容生成一个数据库,因此如果您每个月 运行 hoogle generate
结果都不会改变。添加 --download
强制 Hoogle 重新下载。