我如何询问当前的GHCi环境?

问题描述 投票:4回答:1

我想产生此图的修订的新版本,该版本出现在Haskell98标准中:

enter image description here

[在2019年,我将通过生成所需图形的描述并将其提供给Graphviz来进行此操作。我昨天做过的概念验证实现,只告诉我们有一个名为Monad的东西可以自动生成此图:

enter image description here

概念验证程序相当糟糕,因为它遍历图形的方式是通过向GHCi发送:info命令并尝试解析输出。我对进一步推广这种方法不感兴趣。

正确的方法是弄清楚GHC如何在内部表示类和实例信息,然后使用其API直接查询那些数据结构。

我花了很多时间浏览the GHC API documents,但没有找到所需的切入点。

我想我想请GHC列出当前作用域内所有类型类的名称和实例信息的列表,以及对每个约束的描述。

进行此操作的好方法是什么?我应该在哪里看?

谢谢。

haskell reflection ghc ghci
1个回答
2
投票

我将首先查看模板Haskell。各种reify functions允许您从编译器环境中提取信息。我对此没有概念证明,但看起来应该可行。

© www.soinside.com 2019 - 2024. All rights reserved.