将文本文件的内容带入反射项目的最佳方法

时间:2017-04-10 04:17:34

标签: haskell reflex

我有一个70行文本文件,我希望将其内容作为项目中文本区域的初始值。做这个的最好方式是什么?通常我会使用readFile但我似乎无法在此上下文中使用它。

1 个答案:

答案 0 :(得分:3)

您可以使用Template Haskell在编译时加载文件并将其内容存储在顶层定义中。 Hackage上的The file-embed package为您实现了这一功能:

  

此模块使用Template Haskell。以下是简化版   对不熟悉调用模板的人的使用说明   Haskell函数。

     

此模块中的函数embedFile将文件嵌入到   可在运行时使用它的可执行文件。文件表示为   ByteString。但是,正如您在下面看到的那样,类型签名   表示将返回类型Q Exp的值。为了   将其转换为ByteString,您必须使用Template Haskell   语法,例如:

$(embedFile "myfile.txt")
     

此表达式的类型为ByteString