使用GHC API进行代码编译的“干运行”

时间:2013-12-17 01:57:27

标签: haskell ghc static-analysis dynamic-compilation ghc-api

我正在为Haskell开发一个相当简单的文本编辑器,我希望能够在用户点击“check”时突出显示代码中的静态错误。

有没有办法使用GHC-API进行“干运行”编译haskell文件而不实际编译它?我希望能够获取一个字符串并执行正常编译的所有检查,但没有输出。 GHC-API是理想的,因为那时我不必解析GHC的命令行输出来突出显示错误等。

另外,是否可以对字符串进行检查,而不是对文件进行检查? (如果没有,我可以将它写入临时文件,这不是非常有效,但可以工作)。

如果可以的话,您能提供或指出一个如何做到这一点的例子吗?

This question问同样的事情,但它是从三年前开始的,当时答案是“GHC-API是新的,还没有好的文档。”所以我希望状态已经改变。

编辑:“干运行”限制是因为我在基于Web的设置中执行此操作,其中编译发生在服务器端,因此我希望每次用户点击“检查”时避免不必要的磁盘读/写”。无论如何,可执行文件都会被丢弃,直到他们准备好运行一个版本。

1 个答案:

答案 0 :(得分:4)

只需将此移至答案,此问题已存在ghc-mod,此处为homepage。这已经为Emacs,Sublime和Vim提供了前端,所以如果你需要如何使用它的例子,那就有很多。本质上ghc-mod正是你想要的,是为编辑设计的GHC API的包装器。