【问题标题】:How can I interrogate the current GHCi environment?如何查询当前的 GHCi 环境?
【发布时间】:2019-12-06 17:52:43
【问题描述】:

我想制作这个图表的修订版,新版本,它出现在 Haskell98 标准中:

在 2019 年,我将通过生成我想要的图形的描述并将其提供给 Graphviz 来做到这一点。我昨天做的一个概念验证实现,只告诉有个叫Monad的东西,可以自动生成这个图:

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

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

我在the GHC API documents 中花了很长时间四处寻找,但我没有找到我需要的入口点。

我想我想向 GHC 询问当前范围内的所有类型类和实例信息的名称列表,以及每个约束的描述。

有什么好的方法可以解决这个问题?我应该去哪里看?

谢谢。

【问题讨论】:

    标签: haskell reflection ghc ghci


    【解决方案1】:

    我会首先查看模板 Haskell。各种reify functions 让您可以从编译器环境中提取信息。我没有这方面的概念证明,但它看起来应该是可行的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-17
      相关资源
      最近更新 更多