Ric*_* T. 7 haskell purely-functional unsafe-perform-io
我unsafePerformIO
最近一直在读,我想问你一件事.我很清楚,真正的语言应该能够与外部环境进行交互,因此unsafePerformIO
有些合理.
但是,据我所知,我不知道有什么快速的方法来了解一个看似纯粹的(从类型判断)接口/库是否真的纯粹没有检查代码搜索调用unsafePerformIO
(文档可以省略到提到它).我知道只有当你确定引用透明度得到保证时才应该使用它,但我想知道它.
在您考虑的情况下,使用unsafePerformIO
是不合理的.在对文档unsafePerformIO
解释了这一点:它只是意味着情况下,实施者可以证明有没有办法突破的引用透明,即"纯功能性的"语义.也就是说,如果任何人unsafePerformIO
以某种方式使用纯功能程序可以检测到它(例如,编写一个结果不仅仅依赖于其参数的函数),那么这是一种不允许的用法.
如果遇到这种情况,最有可能的是你发现了一个错误.