Is there a way to only compile Haskell source to interface file, not further? [duplicate]

随声附和 提交于 2019-12-22 05:31:53

问题


Usually, when ghc is compiling a source code, it will produce at least an .o (object) and a .hi (interface) file.

In the interest of diminishing compilation time, if I only need an interface file, can I somehow order ghc to abandon everything else and just give me said interface file? Or, otherwise, obtain that interface by any kind of lowly guile?

I found this ghc user guide part and it says nothing of such. This one doesn't even mention "interface" anywhere in its text. (In particular, -fno-code doesn't generate it.) It must mean there's no easy way. In this question from five years ago, nothing floated up, but by chance things are different now?

Most likely, I expect it to take a hack to ghc. If so, I'd like directions:

  • Is it reasonable to submit a feature request to trac, or (likely) I should rather go for it myself?
  • How is .hi file distinct from something like -ddump-types, just binary?
  • Is there certainty that composing a .hi file takes strictly less compilation stages than a complete .o file? (For example, if there are hashes of machine code fragments within .hi, the corresponding code will probably have to be generated, which means nothing is to be gained here.)

Otherwise, perhaps I can just extract related parts from ghc code so that I can then compile a .hi file from the output of -ddump-types or the like?


回答1:


Actually, there is a flag -fno-code -fwrite-interface that does this. It actually cuts compilation time for even a simplistic example by about a quarter.



来源:https://stackoverflow.com/questions/48682283/is-there-a-way-to-only-compile-haskell-source-to-interface-file-not-further

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!