1

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

4

1 回答 1

3

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

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

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

$(embedFile "myfile.txt")

此表达式将具有类型ByteString

于 2017-04-10T04:23:58.733 回答