我有一个70行文本文件,我希望将其内容作为项目中文本区域的初始值。做这个的最好方式是什么?通常我会使用readFile
但我似乎无法在此上下文中使用它。
答案 0 :(得分:3)
您可以使用Template Haskell在编译时加载文件并将其内容存储在顶层定义中。 Hackage上的The file-embed
package为您实现了这一功能:
此模块使用Template Haskell。以下是简化版 对不熟悉调用模板的人的使用说明 Haskell函数。
此模块中的函数
embedFile
将文件嵌入到 可在运行时使用它的可执行文件。文件表示为ByteString
。但是,正如您在下面看到的那样,类型签名 表示将返回类型Q Exp
的值。为了 将其转换为ByteString
,您必须使用Template Haskell 语法,例如:$(embedFile "myfile.txt")
此表达式的类型为
ByteString
。