工作中有人讨论将其制定为部门范围的政策,禁止使用 unsafePerformIO
及其同类。就我个人而言,我并不介意,因为我一直认为,如果我发现自己想要使用它,通常意味着我需要重新考虑我的方法。
这个限制听起来合理吗?我似乎记得在某处读到它主要是为 FFI 提供的,但我现在不记得在哪里读到过它。
编辑: 好吧,那是我的错。它不会在合理需要的地方受到限制,即。 FFI。该政策的目的更多是为了阻止懒惰和代码异味。
最佳答案
许多核心库(例如 ByteString
)在底层使用 unsafePerformIO
,例如自定义内存分配。
当您使用这样的库时,您相信库作者已经证明了其导出的 API 的引用透明度,并且记录了用户的任何必要先决条件。您的部门应该制定政策和审查流程,以便在内部做出类似的保证,而不是全面禁止。
关于haskell - 针对 unsafePerformIO 的部门限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3893202/