Документация по Haskell на терминале

Можно ли получить документацию на Haskell с терминала или с ghci?

В Ruby я обычно делаю

ri thefunc

В Perl я обычно делаю

perldoc -f thefunc

Или я могу получить интерактивный help в Python.

Как сделать это в Хаскеле? Например, если я хочу получить Документацию о [] или же : на терминале?


Обновить

Я нашел эту тему, но я не уверен, если :i ответ:-/ или это?

*Main> :i []
data [] a = [] | a : [a]    -- Defined in GHC.Types
instance (Eq a) => Eq [a] -- Defined in GHC.Base
instance Monad [] -- Defined in GHC.Base
instance Functor [] -- Defined in GHC.Base
instance (Ord a) => Ord [a] -- Defined in GHC.Base
instance (Read a) => Read [a] -- Defined in GHC.Read
instance (Show a) => Show [a] -- Defined in GHC.Show

4 ответа

Решение

То, что вы хотите, называется Hoogle. На самом деле он немного круче, чем большинство инструментов для документирования командной строки, так как он может искать функции по имени или по типу и довольно умен для работы с типами, которые совместимы, но не совсем то, что вы указали (например, вы можете искать a -> [a] и он поймет, что вы можете захотеть функцию с типом (Monad m) => a -> m aтип, который вы искали - это то же самое, что и заполненный класс типов).

Как говорится в этом ответе, нет никакой возможности получить документацию от ghci. Однако в Haskell типы предоставляют вам больше информации, чем Java (или, очевидно, языки с динамической типизацией, такие как Ruby и Python); они могут быть подсказкой о том, как работает функция, и рассказать вам, как их можно составить.

В ghci вы можете попробовать :browse для просмотра типов всех функций верхнего уровня или с именем пакета в качестве аргумента, например :browse Control.Monad, Это может быть очень полезно, если вы уже знаете о функции, но не знаете, как ее использовать (в противном случае используйте Hoogle или Hayoo, как предлагают другие). Вы также можете использовать :t чтобы получить тип выражения, или :i получить информацию о классе типов.

РЕДАКТИРОВАТЬ - Я знаю, что это немного многовато, но я думаю, что наличие таких вещей, как параметрические типы и т. Д., И приличные "основные" функции облегчают уход от чтения документации, по крайней мере по сравнению с Java или C (может быть, не так много Python или Ruby).

Существует расширение GHCi под названием "GHCi on Acid (GOA)":

http://www.haskell.org/haskellwiki/GHC/GHCi

Это не совсем ri, но это удобный способ использовать Hoogle и другие тонкости из вашего REPL.

Я использую Hoogle и Hayoo!,

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