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