如何在Haskell / GHCi中查看函数的定义?

时间:2011-04-26 05:38:10

标签: haskell ghci

我正在使用Haskell 2010.1.0.0.1和GHC 6.在GHCi提示符下键入:t,然后输入函数名称,向我们显示函数的类型。有没有办法查看函数定义?

3 个答案:

答案 0 :(得分:39)

目前不是。

最接近你想要的命令是:info

  

:信息名称......

     

显示有关给定名称的信息。例如,如果name是一个类,那么将打印类方法及其类型;如果name是一个类型构造函数,那么它的定义将被打印出来;如果name是一个函数,那么它的类型将被打印。如果已从源文件加载名称,则GHCi还将在源中显示其定义的位置。

     

对于类型和类,GHCi还总结了提及它们的实例。为避免显示不相关的信息,仅在(a)其头部提及名称时显示实例,并且(b)实例中提及的所有其他内容由于以下原因而在范围内(合格或其他):load或:模块命令。

像这样:

Prelude> :info ($)
($) :: (a -> b) -> a -> b   -- Defined in GHC.Base
infixr 0 $

但是,您可以在Hackage上查看haddock工具生成的标识符源。

  1. Look up the module on Hackage
  2. Click on the source link
  3. 请注意,“?src”在#haskell IRC频道的lambdabot中是一个有效的命令,并且可以达到您所期望的效果。

    > ?src ($)
    > f $ x = f x
    

答案 1 :(得分:6)

不,不能那样做。 Haskell初学者可以做一些有趣的事情:

  • 在HTML haddock文档中,单击“source”...研究源代码。
  • :browse查找模块导出的所有定义
  • 使用:help获得明显的结果
  • 使用hoogle的网络界面搜索功能,或在本地安装hoogle!
  • 利润!

答案 2 :(得分:5)

我不这么认为。您可以使用:i获取更多信息(对于中缀运算符和数据结构等更有用),但不是定义:

ghci> :i repeat
repeat :: a -> [a]       -- Defined in GHC.List

您可以使用hoogle快速查找标准库函数的文档,右侧有一个链接指向源代码。它仍然只需点击几下即可。