针对 unsafePerformIO 的部门限制

2024-04-17

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

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

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


很多核心库,例如ByteString use unsafePerformIO在幕后,例如自定义内存分配。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

针对 unsafePerformIO 的部门限制 的相关文章

  • 无点镜头创建不进行类型检查

    在函数中test 我遍历一个列表 从它的成员生成镜头 然后打印一些数据 当我使用有针对性的呼叫风格时 这会起作用 当我使其成为无点时 它无法进行类型检查 为什么会出现这种情况 我该如何解决这个问题 在我看来 GHC 并没有保留排名较高的信息
  • Haskell 下划线与显式变量

    我已经学习 Haskell 几个星期了 我有一个关于下划线的使用的问题 作为函数参数 我认为用一个具体的例子来问我的问题会更好 假设我想定义一个函数 根据提供的索引提取列表的元素 是的 我意识到 已经是预先定义的 我可以定义该函数的两种方法
  • Haskell:是的,没有类型类。为什么是整数?

    我有一个关于 GHCi 如何假定整数类型的问题 我正在阅读 Learn you a Haskell 是 否类型的课程 如果您想阅读全文 这里有一个链接 http learnyouahaskell com making our own typ
  • Haskell 泛化问题(涉及列表理解)

    假设我想知道a上的所有要点 x y 矩形内的平面has 我可以使用列表推导式来计算 如下所示 let myFun2D x y x lt 0 2 y lt 0 2 现在 如果我想为一个人完成同样的事情 x y z 空间 我可以采取同样的方式并
  • Scala中有类似Java Stream的“peek”操作吗?

    在Java中你可以调用peek x gt println x 在 Stream 上 它将对每个元素执行操作并返回原始流 这与 foreach 不同 foreach 是 Unit Scala 中是否有类似的东西 最好是适用于所有 Monady
  • 可选回调的 JavaScript 样式

    我有一些函数偶尔 并非总是 会收到回调并运行它 检查回调是否已定义 函数是一种好的风格还是有更好的方法 Example function save callback do stuff if typeof callback undefined
  • Haskell 入门

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 几天来 我一直试图理解 Haskell 中的函数式编程范例 我通过阅读教程和观看截屏视频
  • Traversable 类型类的用途

    有人可以向我解释一下类型类的目的是什么吗Traversable 类型类定义是 class Functor t Foldable t gt Traversable t gt where So Traversable is a Functor
  • 简单 Haskell Monad - 随机数

    我正在尝试扩展代码这个帖子 https stackoverflow com questions 3944170 haskell and state 接受的答案 允许我能够基于以种子作为参数的函数 randomGen 调用 randomGen
  • Haskell Stack 从 github 安装包依赖项

    是否可以使用 Haskell 堆栈从 github 安装软件包的版本 例如在一个 cabal or a stack yaml文件 如何在 git repo branch revision 上指向依赖项 对于堆栈 The 的文档stack y
  • 找不到模块“Yesod”

    我有以下代码 LANGUAGE TypeFamilies QuasiQuotes MultiParamTypeClasses TemplateHaskell OverloadedStrings module Simple where imp
  • Haskell - lambda 表达式

    我试图了解什么是有用的以及如何在 Haskell 中实际使用 lambda 表达式 我不太明白使用 lambda 表达式相对于定义函数的约定方式有何优势 例如 我通常会执行以下操作 let add x y x y 我可以简单地打电话 add
  • 不同编程语言中的浮点数学

    我知道浮点数学充其量可能是丑陋的 但我想知道是否有人可以解释以下怪癖 在大多数编程语言中 我测试了 0 4 到 0 2 的加法会产生轻微的错误 而 0 4 0 1 0 1 则不会产生错误 两者计算不平等的原因是什么 在各自的编程语言中可以采
  • 防止Java实例化的正确方法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在不声明新数据的情况下更改类型(String,Int)元组的 Ord 实例?

    我正在尝试对类型列表进行排序 String Int 默认情况下 它按字符串排序 然后按整数排序 如果字符串相等 我希望它是相反的 首先比较整数 然后如果相等则比较字符串 另外 我不想切换到 Int String 我找到了一种通过定义实例来实
  • Haskell Data.Decimal 作为 Aeson 类型

    是否可以解析一个数据 十进制 https hackage haskell org package Decimal 0 4 2 docs Data Decimal html使用 Aeson 包从 JSON 获取 假设我有以下 JSON foo
  • 如何打乱列表?

    如何从一组数字 1 2 3 直到我击中x 我的计划是重新调整列表 1 2 3 并把它砍在x chopAt 3 2 3 1 2 3 chopAt 3 2 1 3 2 1 3 chopAt 3 3 1 2 3 chopAt chopAt x y
  • 如何更换HXT中的节点?

    给定一个示例 xml 文件
  • 构造微积分中的“Refl”东西?

    在语言中 例如Agda Idris or Haskell对于类型扩展 有一个 键入类似于以下内容的内容 data a b where Refl a a a b意思是a and b是相同的 这样的类型可以定义在结构演算 https en wi
  • 在 Haskell 中获取玫瑰树的根

    最近我开始学习 Haskell 并在以下练习中遇到困难 Write functions root Rose a gt a and children Rose a gt Rose a that return the value stored

随机推荐

  • 自动换行链接,使其不会溢出其父级 div 宽度[重复]

    这个问题在这里已经有答案了 我有这段代码 div permalink section width 960px div a href here goes a very very long link a div 链接文本可能非常长 当其长度超过
  • 在 Play 框架中使用缓存

    我正在尝试实现一个测验应用程序 该应用程序使用 ajax 将问题一一加载 当用户单击 到下一个问题 按钮时 他 她的答案将保存在缓存中 但是当我调试时 缓存列表始终为空 此代码创建第一个缓存数组 public static void vie
  • 什么是“收到信号 15”

    什么可能导致 C MPI 程序使用名为的库日晷 CVODE https computation llnl gov casc sundials documentation documentation html 数值 ODE 求解器 在 Gen
  • href 中的视图源在控制台中显示错误

    a href Click Me a 这曾经作为有效的href属性 但似乎在过去的几个月里 它现在在控制台中显示错误 我正在使用 Chrome 不允许加载本地资源 view source http stackoverflow com http
  • 如何获取 iPhone 和配对的 Apple Watch 之间的当前距离

    有什么办法可以让Apple Watch和配对的iPhone之间保持距离吗 我正在研究一个测试用例 其中当 iPhone 和 Apple Watch 之间的距离发生变化时 应该通知这两个设备 从技术上讲 您无法获得确切的距离 但您可以让一台设
  • 如何在 OpenOffice BASIC 宏中通过鼠标单击获取文档坐标

    背景 我想在我用鼠标单击或悬停的位置 使用按键激活时 粘贴 如 CTRL V 任何内容 最好是图像 形状 我不知道该怎么做获取我单击的文档 X Y 上的位置 Apache OpenOffice SDraw Document OpenOffi
  • 当 git rebase 两个具有共享历史记录的分支时,有没有一种简单的方法可以让共同历史保持共同?

    假设我们有以下修订图 A X Z B C A 在 B 和 C 之前 进一步假设我从上游对 A 进行变基 创建一个新的提交 A 然后将 B 和 C 变基到 A 生成的修订图如下 A X Z B X Z C 请注意 共享历史记录不再共享 有没有
  • SQL中的条件外键

    我有一张名为 PartyChannel 的表 其中包含以下列 ID ChannelID ChannelType ChannelID stores MailID or PhoneID or EmailID取决于ChannelType 那么我如
  • 为什么 SQLAlchemy/associationproxy 重复我的标签?

    我正在尝试在与标签非常相似的情况下使用关联代理文档中的示例 http www sqlalchemy org docs 05 reference ext associationproxy html 这是我的架构的一个子集 它是一个博客 使用声
  • Websocket、Angular 2 和 JSON Web 令牌身份验证

    我的 Angular 2 应用程序 用打字稿编码 有一个简单的身份验证方案 用户登录 服务器返回 JSON Web 令牌 JWT abc123 在每次 API 调用时 应用程序都会将 JWT 发送到Authorization header
  • 将 SELECT DISTINCT ON 查询从 Postgresql 转换为 MySQL

    我一直在使用PostgreSQL现在迁移到MySQL 在我的查询中 我正在使用PostgreSQL s SELECT DISTINCT ON col1 col2 col3 我想知道这句话是否有对应的内容MySQL 没有完全等效的方法可以将使
  • C++ sizeof C 风格字符串/字符数组 - 优化

    我是一名大学学生 我主要使用 Java 工作 C 对我来说很陌生 所以我可能会犯很多愚蠢的错误 而且我还有即将到来的考试要应对 别对我太严厉 注意 我不能使用 C std string 因为由于大学任务我需要使用 C 字符串 参考我的研究和
  • java webapp配置策略

    我的网络应用程序的一部分涉及上传图像文件 在生产服务器上 文件需要写入 somepath on Production server images 对于本地开发 我想将文件写入 some different path images 处理这些配
  • 如何在 powershell 中转义大括号 {...}?

    我需要生成多行 xml 标记 其中包含 GUID
  • 如何在 jQuery 中检测复选框点击

    我无法检测到从下面的脚本中单击了何时以及哪个复选框 HTML 片段
  • 给定焦点和相机主中心,如何创建透视投影矩阵

    我设法使用 OpenCV 获取相机的内在和外在参数 因此我有 fx fy cx 和 cy 我还有屏幕 图像的宽度和高度 但是如何根据这些参数创建 OpenGL 透视投影矩阵呢 glFrustum 展示了如何在给定 Z 近 Z 远以及图像宽度
  • R fromJSON 无法打开连接

    我正在使用一种算法 R 它调用一个 Web 服务 该服务对数据库进行查询并返回一个 JSON 对象 url lt paste https example com id 1 document lt fromJSON content url m
  • 在 Apache Zeppelin 上运行 Pig 查询

    我正在 Apache Zeppelin 中运行以下 Pig 查询 pig query A load Pig data using PigStorage as ExamName ExamId BITSID StudentName Issue
  • 从函数中打开 fancybox

    我正在尝试从我拥有的函数中打开一个 fancybox 简而言之 我的 HTML 代码如下所示 a href modalMine click a 我的功能的一部分如下所示 function myfunction me me fancybox
  • 针对 unsafePerformIO 的部门限制

    工作中有人讨论过将其作为一项全部门政策 禁止使用unsafePerformIO及其同类 就我个人而言 我并不介意 因为我一直认为 如果我发现自己想要使用它 通常意味着我需要重新考虑我的方法 这个限制听起来合理吗 我似乎记得在某处读到它主要是