Подтвердить что ты не робот

Документация 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
4b9b3361

Ответ 1

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

Ответ 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.