Как я могу искать все пакеты с помощью Google через командную строку?

Я установил Google локально и запустил 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

Есть ли способ, которым я могу генерировать ту же "базу данных" локально? Или есть ли CLI для поиска https://hoogle.haskell.org/?

Согласно https://wiki.haskell.org/Hoogle я должен быть в состоянии запустить hoogle data или же hoogle data all - но это, кажется, просто сделать поиск (может быть, устарел?).

2 ответа

Решение

Я старался:

$ 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 заставляет гугл скачать заново.

Этот проект может представлять интерес: https://github.com/andrevdm/bhoogle

Я также написал функцию bash (зависит от jq, fzf, xclip):

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 результаты в:

Другие вопросы по тегам