haskell - 针对 unsafePerformIO 的部门限制

标签 haskell coding-style monads unsafe-perform-io

工作中有人讨论将其制定为部门范围的政策,禁止使用 unsafePerformIO 及其同类。就我个人而言,我并不介意,因为我一直认为,如果我发现自己想要使用它,通常意味着我需要重新考虑我的方法。

这个限制听起来合理吗?我似乎记得在某处读到它主要是为 FFI 提供的,但我现在不记得在哪里读到过它。

编辑: 好吧,那是我的错。它不会在合理需要的地方受到限制,即。 FFI。该政策的目的更多是为了阻止懒惰和代码异味。

最佳答案

许多核心库(例如 ByteString)在底层使用 unsafePerformIO,例如自定义内存分配。

当您使用这样的库时,您相信库作者已经证明了其导出的 API 的引用透明度,并且记录了用户的任何必要先决条件。您的部门应该制定政策和审查流程,以便在内部做出类似的保证,而不是全面禁止。

关于haskell - 针对 unsafePerformIO 的部门限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3893202/

相关文章:

haskell - 如何实现 mapAccumM?

javascript - 开发 JavaScript 库时应该使用命名函数吗?

c++ - 断言返回值,但以任何一种方式运行

haskell - 没有包装值(value)的单子(monad)?

loops - 简单的 Haskell 循环

haskell - Haskells `succ` 数字( float )背后的基本原理

java - 从干净代码的角度来看,为什么我们应该避免定义具有三个以上参数的方法?

scala - 如何在 scala 中将这个 future /状态概念实现为 monad

java - Haskell 中的类型构造函数和 java 泛型类型有什么不同?

haskell - 在 ghci 中用花括号做 block 会引发错误