Как я могу искать все пакеты с помощью 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

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

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


person Chris Stryczynski    schedule 24.03.2018    source источник


Ответы (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 заставляет Hoogle загружать заново.

person Neil Mitchell    schedule 25.03.2018

Этот проект может представлять интерес: 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 приводит к:

введите здесь описание изображения

person Chris Stryczynski    schedule 24.03.2018