为什么Template Haskell允许在编译期间进行任意IO操作?

7
作为我正在学习TH的一部分,我发现它允许在编译期间进行任意的IO操作(请参见Template Haskell的缺点是什么?)。这对我来说似乎非常危险。为什么会这样?它对于某些任务真的很必要吗?还是只是简化设计,把所有不纯的东西都扔进IO垃圾箱里?
更新:我还想知道是否有任何努力使TH的安全子集禁止任意的IO操作。
1个回答

12

模板 Haskell 的主要预期用途之一是从外部资源中构建常量,例如来自文件的大文本值或构建信息(版本、时间、环境)。显然,这需要系统访问权限。

随后就需要尝试构建一个安全的 API,或者只允许任意 IO 操作。由于相对简单且很容易出错,选择了后者。


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