Доступ к документации для функции из командной строки Hoogle
При поиске функции на веб-сайте Hoogle отображается документация, связанная с ней, например:
mod :: a -> a -> a infixl 7
integer modulus, satisfying
(x `div` y)*y + (x `mod` y) == x
Hoogle также существует как исполняемый файл командной строки. Насколько я знаю, он показывает только сигнатуру функции:
~ ❯❯❯ hoogle --info Prelude.mod
Prelude mod :: Integral a => a -> a -> a
From package base
mod :: Integral a => a -> a -> a
Есть ли способ получить соответствующую документацию через командную строку, как в онлайн-версии?
2 ответа
Решение
Использовать -i
вариант. Не очевидно, как получить справку для команды по умолчанию (search
); вот как это сделать:
$ hoogle search --help
Hoogle v4.2.41, (C) Neil Mitchell 2004-2012
http://haskell.org/hoogle
hoogle [search] [OPTIONS] [QUERY]
Perform a search
Flags:
-c --colour --color Use colored output (requires ANSI terminal)
-l --link Give URL's for each result
-i --info Give extended information about the first result
-e --exact Match names exactly when searching
-d --databases=DIR Directories to search for databases
-s --start=INT Start displaying results from this point on (1 based)
-n --count=INT Maximum number of results to return
-w --web[=MODE] Operate as a web tool
-r --repeat=INT Run the search multiple times (for benchmarking)
Common flags:
-? --help Display help message
-V --version Print version information
--numeric-version Print just the version number
-v --verbose Loud verbosity
-q --quiet Quiet verbosity
С -i
флаг, Hoogle покажет первый результат запроса вместе с описанием Haddock:
$ hoogle -i "nub"
nub :: (Eq a) => [a] -> [a]
base Data.List
O(n^2). The nub function removes duplicate elements from
a list. In particular, it keeps only the first occurrence of each
element. (The name nub means `essence'.) It is a special case
of nubBy, which allows the programmer to supply their own
equality test.
Если вы хотите увидеть описание результата, отличного от первого, укажите полное имя:
$ hoogle -i "Control.Foldl.nub"
nub :: Ord a => Fold a [a]
foldl Control.Foldl
O(n log n). Fold values into a list with duplicates removed,
while preserving their first occurrences