Документация Haskell на терминале
Можно ли получить документацию Haskell с терминала или из ghci?
В Ruby я обычно делаю
ri thefunc
В Perl я обычно делаю
perldoc -f thefunc
Или я могу получить интерактивный help
в Python.
Как это сделать в Haskell? Например, если я хочу получить документацию о []
или :
в терминале?
Update
Я нашел этот связанный поток, но я не уверен, что ответ :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
Ответы
Ответ 1
То, что вы хотите, называется Hoogle. Это на самом деле довольно прохладно, чем большинство инструментов командной строки командной строки, поскольку оно может искать функции по имени или по типу и довольно умно при разработке типов, которые совместимы, но не точно, что вы указали (например, вы можете искать a -> [a]
и выяснится, что вам может понадобиться функция с типом (Monad m) => a -> m a
, тип, который вы искали, - это то же самое, что и в заполненном типе).
Ответ 2
Я использую Hoogle и Hayoo!.
Ответ 3
Как этот ответ говорит, нет способа получить документацию от ghci. Однако в Haskell типы предоставляют вам больше информации, чем Java (или, очевидно, динамически типизированные языки, такие как Ruby и Python); они могут быть подсказкой о том, как работает эта функция, и рассказать вам, как вы можете их компилировать.
В ghci вы можете попробовать :browse
просмотреть типы всех функций верхнего уровня или имя пакета в качестве аргумента, например. :browse Control.Monad
. Это может быть очень полезно, если вы уже знаете о функции, но не знаете, как ее использовать (в противном случае используйте Hoogle или Hayoo, как предлагают другие). Вы также можете использовать :t
для получения типа выражения или :i
для получения информации о классе.
РЕДАКТИРОВАТЬ. Я знаю, что это немного подозрительно, но я думаю, что наличие таких вещей, как параметрические типы и т.д., и достойные "основные" функции делают его немного легче избежать чтение документации, по крайней мере, по сравнению с Java или C (возможно, не так много Python или Ruby).
Ответ 4
Существует расширение GHCi под названием "GHCi on Acid (GOA)":
http://www.haskell.org/haskellwiki/GHC/GHCi#GHCi_on_Acid
Это не точно ri
, но это удобный способ использования Hoogle и других тонкостей из вашего REPL.