我需要对现有的 Haskell 源文件进行一些更改,并写出修改后的源代码。我想为此使用 GHC API,以便结果与当前的 Haskell 一致。我目前的方法在这里,类似于:
mod <- parseTheSource -- omitted, but I'm sure this works
printForUser dynFlags outHandle neverQualify $ ppr (transform mod)
这工作......几乎!它去除了 LANGUAGE 和 OPTIONS_GHC pragma,因此有时较早编译的文件在往返后会失败。
有一个更好的方法吗?
我注意到这ghc-exactprint
看起来很相关,但我不知道如何让它很好地工作。看起来它与 GHC 会话相关联,该会话可能DynFlags
从命令行初始化,以及许多我不想要的其他垃圾。如果这是正确的方向,我可以使用一些帮助来提炼要做什么,尤其是使用我自己DynFlags
已经可以构建并且不会将 GHC 命令行处理等泄漏到代码中的帮助。