作为基于属性测试的研究项目的一部分,我需要对 Haskell 程序进行静态全程序分析。我正在寻找有关如何对 Haskell 程序进行整体程序分析的建议,希望自己不需要构建大量基础设施。
我查看了 Template Haskell,它具有我需要的许多功能,但缺少一个关键特性:在 GHC 中实现的 Template Haskell 中,似乎无法通过 name 获取函数的定义。(相关的 SO 问题:How to get the declaration of a function using `reify`?)
我怀疑可能有某种方法可以使用 GHC API 对 Haskell 程序进行全程序分析,但我无法从 GHC API 文档中轻松确定如何完成。
特别是,给定一个函数调用站点,我需要能够查找相应的函数定义。我对基于模板 Haskell 或 GHC API 的解决方案特别感兴趣。
有没有办法在不自己构建所有基础设施的情况下对 Haskell 程序进行整个程序分析?