如何查看Haskell类型类关联的所有类(含子类)?
问题
我发现查看一个类拥有哪些实例十分有价值,这能帮助我理解类的用途与使用方式。幸运的是,GHCi(通过:info <class>命令)和Hackage文档都能提供这类信息。
出于同样的原因,我希望查看类之间的关系:能获取类似如下示意图所展示的任意给定类的关系概览:
一张展示Haskell类层级关系的示意图,清晰呈现多个类之间的继承与关联关系
请问能否通过GHCi、Hackage或其他工具/服务查看给定类关联的所有类?
目前GHCi的:info <class>和Hackage仅显示超类,不显示子类。
解决方案
- Hoogle:搜索目标类后,页面会展示该类的所有子类(标注在相关
instance条目下),同时也会列出超类关系,能直观了解类的关联网络。 - Haskell Hierarchy Viewer:专门的类层级可视化工具,输入目标类名即可生成包含超类、子类的完整关系图,和你需要的示意图效果一致。
- 自定义GHCi脚本:借助
ghc-api编写简单脚本,可遍历已加载的类信息,提取目标类的子类关联,不过需要具备一定的Haskell开发基础。 - Stackage文档:部分类的Stackage文档页面会附带完整的子类列表,比Hackage原生展示更全面,可优先查看。
内容的提问来源于stack exchange,提问作者Blue Nebula
相关产品推荐
相关产品推荐

