Pet*_*lák 7 compiler-construction io haskell template-haskell
当我试图了解TH时,我发现它允许IO
在编译期间执行任意操作(请参阅模板Haskell有什么不好?).这对我来说似乎很危险.这是为什么?某些任务真的有必要吗?或者只是简化其设计,"将所有不纯净的东西扔进IO
罪孽箱"?
更新:我也有兴趣,如果有在做出任何努力,安全 TH的子集,它不允许随意IO
操作.
Car*_*arl 12
Template Haskell的主要用途之一是从外部资源构建常量,例如来自文件的大文本值或构建信息(版本,时间,环境).显然,这样做需要系统访问.
然后它会尝试为此构建一个安全的API,或者只允许任意IO.选择后者是因为它是多么简单,以及如何容易地获得安全的API错误.