终端上的Haskell文档

时间:2011-07-06 03:58:46

标签: haskell terminal reference manual

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

在Ruby中我经常做

ri thefunc

在Perl我经常做

perldoc -f thefunc

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

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


更新

我找到了this related thread,但我不确定: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 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:4)

我使用HoogleHayoo!

答案 2 :(得分:4)

GHCi扩展称为“GHCi on Acid(GOA)”:

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

这不完全是ri,但它是一种使用来自REPL的Hoogle和其他细节的便捷方式。

答案 3 :(得分:3)

作为this answer says,无法从ghci获取文档。但是,在Haskell中,类型为您提供了比Java更多的信息(或者显然是动态类型的语言,如Ruby和Python);它们可以暗示函数的工作原理,并告诉你如何编写它们。

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

编辑 - 我知道这有点意见,但我认为参数类型等等的存在以及体面的“核心”功能使它更容易逃脱阅读文档,至少与Java或C相比(可能不是Python或Ruby)。