我正在使用带有 GHC 6 的 Haskell 2010.1.0.0.1。:t
在 GHCi 提示符后键入函数名称,向我们显示函数的类型。有没有办法查看函数定义?
问问题
20588 次
3 回答
45
不是现在。
最接近您想要的命令是:info
:信息名称...
显示有关给定名称的信息。例如,如果 name 是一个类,则将打印类方法及其类型;如果 name 是类型构造函数,则将打印其定义;如果 name 是一个函数,那么它的类型将被打印出来。如果 name 已从源文件加载,则 GHCi 还将显示其定义在源中的位置。
对于类型和类,GHCi 还总结了提及它们的实例。为了避免显示不相关的信息,仅当 (a) 其头部提到名称,并且 (b) 实例中提到的所有其他事物都在范围内(无论是限定的还是其他的)作为 :load 或的结果时,才会显示一个实例:模块命令。
像这样:
Prelude> :info ($)
($) :: (a -> b) -> a -> b -- Defined in GHC.Base
infixr 0 $
不过,您可以在 Hackage 上查看黑线鳕工具生成的标识符的来源。
请注意,“?src”是lambdabot 中的有效命令,在 #haskell IRC 频道上,并且执行您所期望的操作。
> ?src ($)
> f $ x = f x
于 2011-04-26T05:46:51.970 回答
8
不,不能那样做。Haskell 初学者可以做一些有趣的事情:
- 在 HTML haddock 文档上,单击“源”...研究源。
:browse
查找模块导出的所有定义- 用于
:help
明显的结果 - 使用hoogle的web界面搜索功能,或者本地安装hoogle!
- ?
- 利润!
于 2011-04-26T05:46:50.543 回答
7
我不这么认为。您可以使用:i
更多信息(对于中缀运算符和数据构造等更有用),但不能使用定义:
ghci> :i repeat
repeat :: a -> [a] -- Defined in GHC.List
您可以使用hoogle快速找到标准库函数的文档,右侧有指向源代码的链接。不过,仍然需要点击几下。
于 2011-04-26T05:45:30.997 回答