如何在Haskell中查找类的源代码(实现)

时间:2013-01-13 07:40:17

标签: haskell happstack

我正在阅读有关IxSet的http://happstack.com/docs/crashcourse/AcidState.html#ixset的一些文档,我想知道如何查看从Data.IxSet导入的Indexable类型类的源代码。

然后我拿了一个Happstack的存储库,看着那里(darcs得到http://patch-tag.com/r/mae/happstack),但这让我更加沮丧。

我看到happstack / happstack-ixset / src / Happstack / Data / IxSet.hs文件,它创建了一个模块Happstack.Data.IxSet,但我看不到哪个文件创建了一个模块Data.IxSet(和实现) class Indexable)。

2 个答案:

答案 0 :(得分:5)

Haskell代码的首选地址是hackage。在首页上方便地链接到Hayoo,除了Hoogle之外还有另一个主要的Haskell搜索引擎。两者都有优势。

Hayoo对hackage上的所有软件包编制索引,默认搜索包括hackage上的所有软件包。如果要搜索已知名称,例如Indexable,这是更方便的引擎,特别是如果您不知道名称来自哪个包。 - 目前 - 第五次点击会将您带到Data.IxSet.Indexable。在Haddock文档的右侧,您会找到一个Source链接,将您带到hscoloured源(在这种情况下,这不是非常有用的,但是,只有一个类成员,没有默认实现,它告诉你没有在文档之上。)

默认情况下,Hoogle仅搜索少量软件包,如果要在搜索中包含其他软件包,则必须通过向搜索添加+packagename来指定 - 但这会将搜索限制为指定的软件包。有关Hoogle搜索的更多信息,请访问manual。 Hoogle的优势在于按类型搜索。 Hoogle按类型搜索会对搜索类型应用更多变换,因此如果你不知道确切的类型,那么找到比Hayoo更多的匹配(这不是没有缺点,但是,有时你得到很多不相关的命中)。如果您搜索示例Map k a -> k -> Maybe a,则Hoogle的第一个结果是最有可能的候选人Data.Map.lookup :: Ord k => k -> Map k a -> Maybe a,而Hayoo找不到,因为它不会置换参数。

无论哪种方式,两个搜索引擎都会引导您查询所查询实体的hackage的Haddock文档(如果搜索成功),Source链接将您带到代码中,如果您愿意的话。

答案 1 :(得分:1)

使用Haddock文档,本地生成或在线。 Google搜索通常会返回顶部附近的相关文档。文档是交叉链接的,因此您可以浏览所需的模块。每个定义旁边都有一个指向源代码的链接for example

此特定模块属于基本库集。