我如何在Haskell / GHCi中查看函数的定义?
我在GHC6中使用了Haskell 2010.1.0.0.1。在GHCi提示符下键入:t
后跟一个函数的名字,显示了函数的types。 有没有办法查看函数定义?
不是现在。
最接近你想要的命令是:info
:信息名称…
显示有关给定名称的信息。 例如,如果name是一个类,那么将打印类方法及其types; 如果name是一个types构造函数,那么它的定义将被打印; 如果名称是一个函数,那么它的types将被打印。 如果名称已经从源文件加载,那么GHCi也将在源文件中显示其定义的位置。
对于types和类别,GHCi还总结提及它们的实例。 为了避免显示不相关的信息,仅当(a)其头部提及名称时显示实例,以及(b)实例中提及的所有其他事物由于以下情况而在范围内(合格的或其他):模块命令。
像这样:
Prelude> :info ($) ($) :: (a -> b) -> a -> b -- Defined in GHC.Base infixr 0 $
你可以在Hackage上看到haddock工具生成的标识符的来源。
- 在Hackage上查找模块
- 点击源代码链接
请注意,“?src” 是在#haskell IRC频道上的lambdabot中的有效命令,并且符合您的期望。
> ?src ($) > f $ x = fx
不,不能这样做。 Haskell初学者可以做一些有趣的事情:
- 在HTML haddock文档上,点击“source”…研究源代码。
-
:browse
查找模块导出的所有定义 - 使用
:help
明显的结果 - 使用hoogle的Web界面searchfunction,或在本地安装hoogle!
- ?
- 利润!
我不这么认为。 你可以使用:i
多一点信息(对中缀操作符和数据结构等更有用),但不是定义:
ghci> :i repeat repeat :: a -> [a] -- Defined in GHC.List
您可以使用hoogle快速查找标准库函数的文档,右侧有一个链接可以find源代码。 尽pipe如此,它仍然是点击几下。