【发布时间】:2013-11-09 20:03:50
【问题描述】:
我需要将一些来自编译脚本的信息传递给 Template Haskell。目前编译脚本将信息保存在系统环境中,所以我只是使用包裹在runIO 中的System.Environment.getEnvironment 阅读它。有没有更好的方法,比如将一些参数传递给ghc(类似于C 预处理器的-D...),或者在TH 中专门为此目的设计的东西?
【问题讨论】:
-
从外部文件读取该信息并使用
addDependentFile使ghc --make知道该文件是一个明显的替代方案。您当前的方案存在哪些问题? -
@MikhailGlushenkov 实际上,环境仅传递项目目录的根目录,然后从文件中读取更多信息。所以
addDependentFile将对我的情况有所帮助。目前的方案正在运行,我只是想知道是否有其他规范的方法来做到这一点。 -
也可以使用
location函数获取项目目录的根目录(假设你知道当前模块到根目录的相对路径)。这是an example。 -
您可以将 -XCPP 与模板 haskell 一起使用,但您的方式似乎效果更好。
-
您是否希望用户选择自己的配置文件,例如通过在命令行传递文件路径?
标签: haskell compile-time template-haskell