【发布时间】:2014-09-24 09:28:43
【问题描述】:
示例 - Data.List 有一个为 Data.Foldable 定义的实例,但它是在可折叠而不是在列表中定义的(并且针对“[]”而不是“列表”)。
对于实例与类型本身在同一文件中定义的情况(例如Data.Sequence),它会在文档中列出。例如,我对 Hoogle 或 Hayoo 没有任何运气。
虽然我可以看到最常见的情况是带有数据类型定义的实例定义,但有时必须将其放在单独的文件中。我只是碰巧选择了一个不好的 Data.List 示例,还是我的搜索技能缺少某些东西?
澄清:我已经了解了可折叠和列表,并且可以合理地期望每个人在探索 Haskell 的早期就遇到过这两种情况。但是,对于某些复杂类型 T 来自例如Snap/Yesod/lens 我不太可能知道我从未遇到过的一些更复杂的类型类是相关的。我想知道是否有某种方法可以显式搜索未在类型文件中定义的实例(可以在类型的自动生成的文档中找到)。
【问题讨论】:
-
AFAIK
Data.List实现了[](及其功能),它是Prelude的一部分,但Foldable不是Prelude的一部分不是 .将Foldable的实例添加到Prelude将添加对外部包的非必需依赖项,这不是一个好主意。Prelude应该能够在没有任何依赖的情况下工作。因此,这些实例被放在定义类的文件中。 -
@Bakuriu 实际上,它不依赖于外部包 -
Data.Foldable在base中。实际上,GHC 7.10 正在从Prelude导出Foldable和Traversable。
标签: haskell