终端上的Haskell文档

Ari*_*rie 20 terminal haskell reference manual

是否可以从终端或ghci获取Haskell文档?

在Ruby中,我通常会这样做

ri thefunc
Run Code Online (Sandbox Code Playgroud)

在Perl我经常这样做

perldoc -f thefunc
Run Code Online (Sandbox Code Playgroud)

或者我可以help在Python中获得交互式.

如何在Haskell中做这种事情?例如,如果我想获得文档[]:在终端?


更新

我发现了这个相关的帖子,但我不确定: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
Run Code Online (Sandbox Code Playgroud)

Chu*_*uck 12

你想要的是Hoogle.它实际上比大多数命令行doc工具要凉爽得多,因为它可以按名称或类型查找函数,并且非常聪明地处理兼容但不完全符合您指定类型的类型(例如,您可能会搜索a -> [a]和它会发现你可能想要一个具有类型的函数,(Monad m) => a -> m a你搜索的类型与填充的类型类相同.


gat*_*ado 5

正如这个答案所说,无法从 ghci 获取文档。然而,在 Haskell 中,类型比 Java(或者显然是动态类型的语言,如 Ruby 和 Python)提供了更多的信息;它们可以暗示函数的工作原理,并告诉您如何组合它们。

在ghci中,可以尝试:browse查看所有顶级函数的类型,或者以包名作为参数,例如:browse Control.Monad. 如果您已经了解某个函数,但不确定如何使用它(否则,请按照其他人的建议使用 Hoogle 或 Hayoo),这将非常有用。您还可以使用:t获取表达式的类型,或:i获取有关类型类的信息。

编辑——我知道这有点自以为是,但我认为参数类型等的存在和体面的“核心”函数使得不阅读文档更容易一些,至少与 Java 或 C 相比(也许不是 Python 或 Ruby)。