在Haskell中有没有辅助显式导入模块的工具?

8

在考虑了这里始终明确导入模块的原因后(除了Prelude),我试图遵守这个规范。但是,有时候这可能会很麻烦。是否有任何工具可以分析工作代码并给出完整的显式导入列表?


如果你使用 ghc -v 编译,你可以看到一个以 Link Info: ((["-lHScryptohash-0.11.6", .... 开始的部分,其中包含所有导入的信息。但是这种方法存在一些问题... 首先,你需要提取信息并解析它,其次,它似乎包含了比你需要的更多的软件包。我因为这些问题而犹豫是否将此评论提升为答案,但也许这可以帮助你。 - jamshidh
1个回答

8

有一个-ddump-minimal-imports标志可以用于ghc

结果将放置在文件(module-name).imports中。

-fno-code ghc选项在这里也很有帮助(避免代码生成阶段)。


这显示的是导入本身,而不是.cabal文件所需的包。 - jamshidh
是的,但我不认为OP是在询问那个。对于获取包名称和版本,似乎cabal init做得很好。 - ErikR
这正是我一直在寻找的。只是为了记录 - 我在沙盒中使用了cabal build --ghc-options="-ddump-minimal-imports -fno-code"。从一个干净的状态开始,ar会抱怨没有目标文件,但不管怎样,构建完成了所需的任务。 - Pablo
我刚刚注意到,在使用#ifdef条件编译时,存在某些名称可能不会出现在-ddump-minimal-imports的输出中的可能性。 - Pablo
对于堆栈,命令是 stack build --ghc-options="-ddump-minimal-imports" - Chris Stryczynski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接