OCaml:用消息断言

2024-04-20

又是另一个问题:P 我不太确定是否应该将其发布在这里或 OCaml 邮件列表上,但我首先尝试这样做。

我喜欢断言语句。然而,我发现如果没有附加消息,错误消息几乎毫无用处(第 XXX 行的断言冲突 --- 很好,但实际上出了什么问题?)。 我认为断言的一个很好的例子是 pythonicassert x > 0, "X must be greater than zero for the algorithm X to work"一个不好的例子是 C-likeassert(x>0).

我非常失望地发现无法将错误消息附加到 OCaml 中的断言 =( 我的选择是:

  • 编写一个自定义函数,比如说vassert=> 但我不会得到只有通过assert keyword
  • Use failwith,但它要冗长得多,而且我认为它遇到了与自定义函数相同的问题。
  • 使用来自的函数OUnit,但我不想引入不必要的依赖关系。

其他人也有同样的问题吗?人们用什么?


有点乏味,但效果很好:

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

OCaml:用消息断言 的相关文章

  • OCaml 中的“Eval”字符串

    我正在尝试 评估 表示 OCaml 中的 OCaml 表达式的字符串 我想做一些与 Python 类似的事情eval https docs python org 3 library functions html eval 到目前为止我还没有
  • 如何将模块与 js_of_ocaml 一起使用?

    我目前正在开发一个用 OCaml 编写并使用 js of ocaml 编译为 javascript 的网站项目 只要我使用该命令只有一个源文件 它就可以很好地工作ocamlfind ocamlc package js of ocaml pa
  • 为什么这个 OCaml 程序比我的 C 程序更快?

    我写了一个基本的嬉皮舞 http www facebook com careers puzzles php puzzle id 7使用 C Python 和 OCaml 编写程序 诚然 这可能不是这三种语言的一个很好的基准 但我得到的结果是
  • 在 OCaml 中的 let 命令(即 let _ = ... in)中使用下划线通配符有副作用吗?

    使用 OCaml 时 我几乎总是使用下划线通配符let exp 特别是当结果exp并不重要 重要的是里面的计算 例如 let print endline abc in let a a 1 in let do some thing in 所以
  • OCaml 是否复制了自定义块?

    想象一下 我有一个名为 libcat 的 C 库 用于与我的毛茸茸的猫进行交互 因此 我正在为 OCaml 编写绑定来简化与 fluffy 的交互 module type CAT sig type cat val find gt cat v
  • 在ocaml中编写多行函数

    我无法理解如何在 ocaml 中编写函数 因为我只编写了不需要用 分隔的多行的递归函数 我正在尝试创建一个函数 给定一个整数 n 返回一个充满零且对角线上只有一个的矩阵 因此大小为 n 的单位矩阵 我是函数式编程和 ocaml 的新手 所以
  • 跨编译单元的 OCaml 递归模块

    我试图将以下递归模块拆分为单独的编译单元 具体来说 我希望 B 位于它自己的 b ml 中 以便能够与其他 A 一起重用它 module type AT sig type b type t Foo of b Bar val f t gt b
  • 是否可以在 OCaml 解释器中使用箭头键?

    每次我在解释器中使用这些键时 我都会不断出现如下符号 D C 我在 ZSH 中使用 Linux Mint 12 但是在 Ubuntu 中使用 bash 得到了相同的结果 另外 ssh 中也是同样的情况 库存 OCaml 顶层没有内置行编辑功
  • 如何从ocaml列表中获取子列表

    我正在查看列表文档 图书馆好像没有提供sublist功能 我正在尝试从中获取元素列表i to j 现在我必须把它写成 let rec sublist list i j if i gt j then else List nth list i
  • 类型变量和局部抽象类型有什么区别?

    我试图理解的目的局部抽象类型在 OCaml 中 局部抽象类型与类型变量有何不同 看来他们有相同的行为 Type variable let f x a a x val f a gt a
  • 将 OCaml 转换为 F#:将 OCaml open_box 和 close_box 转换为 F#

    我正在将几个基于 OCaml 的模块转换为 F 并遇到了 OCaml 打印格式化函数open box 和 close box http caml inria fr pub docs manual ocaml libref Format ht
  • OCaml 中 let rec 的限制

    这几天我在学习OCaml 发现了这个 OCaml 对于可以放在 let 记录右侧的内容有限制 像这个 let memo rec f norec let rec f memoize fun x gt f norec f x in f Erro
  • 错误:无法安全地评估递归定义模块的定义

    我很想了解为什么会发生此错误以及解决该错误的最佳方法是什么 我有几个文件types ml and types mli它定义了一个变体类型value可以是许多不同的内置 OCaml 类型 float int list map set 等 由于
  • 如何缩进现有 OCaml 代码

    我有大约 30 000 行缩进严重的 OCaml 代码 包括 mly 和 mll 文件 并且想要缩进它们 我尝试在谷歌上搜索 ocaml indent 的变体 我能得到的最接近的结果是使用 Omlet vim 并一次缩进一行代码 在插入模式
  • OCaml 中的线性类型

    Rust http www rust lang org 有一个线性类型系统 有什么 好的 方法可以在 OCaml 中模拟这个吗 例如 当使用 ocaml lua 时 我想确保仅当 Lua 处于特定状态 堆栈顶部的表等 时才调用某些函数 Ed
  • OCaml 中的用户定义打印机

    printf fprintf等 全部接受 a转换 手册上说对于 a 用户定义的打印机 采用两个参数 并将第一个参数应用于 outchan 当前输出通道 和第二个参数 因此 第一个参数的类型必须为 out channel gt b gt un
  • OCaml 作为 C 库,hello world 示例

    我希望通过 C 调用 OCaml 代码 方法是将 OCaml 编译为包含 C 接口的静态或共享库 这一页 https caml inria fr pub docs manual ocaml intfc html似乎解释了如何为 OCaml
  • 将“列表”转换为“集合”?

    OCaml 真的没有从列表转换为集合的函数吗 如果是这样的话 是否可以制作一个通用函数list to set 我尝试制作一个多态集 但没有成功 基本问题 列表可以包含任何类型的元素 集合 假设你的意思是Set http caml inria
  • 如何使用 Frama-c Value 插件的 Value.Eval_expr、Value.Eval_op 等模块中的函数

    我正在尝试创建一个 frama c 插件 该插件依赖于 Frama c Value 插件 我想获取并打印 C 源代码中所有左值的值集 为了做到这一点 我想使用 Value Eval exprs Value Eval op 等中可用的函数 例
  • 为什么计算斐波那契数需要很长时间?

    几天前我开始学习Ocaml 我尝试编写一个斐波那契数字程序 let rec fib a if a 1 a 2 then 1 else fib a 1 fib a 2 该代码不是最佳的 因为我不知道如何处理异常情况 但现在 如果我尝试计算 f

随机推荐

  • Redux 不就是美化了全局状态吗?

    所以我一周前开始学习 React 我不可避免地遇到了状态问题以及组件应该如何与应用程序的其余部分进行通信 我四处搜寻了一下 Redux 似乎是这个月的热门 我通读了所有文档 我认为这实际上是一个相当革命性的想法 以下是我的想法 人们普遍认为
  • 在 C# webBrowser 控件中调用 Javascript 函数

    我正在使用网页浏览器C 中的控件加载网页 需要调用返回字符串值的 JavaScript 函数 我有一个解决方案可以使用调用脚本方法 我也尝试了很多 但都失败了 你能具体说明什么失败了吗 我的下面的示例由一个带有 Web 浏览器和按钮的表单组
  • 为什么 `List` 有 `forEach` 却没有 `map` 默认方法?

    我研究过在 Java 8 中编写基于流的代码 并注意到一种模式 即我经常有一个列表 但需要通过对每个元素应用简单的映射来将其转换为另一个列表 写完后 stream map collect Collections toList 还有一次我记得
  • 如何使用 FakeItEasy 伪造一个动作<>

    我正在使用 FakeItEasy 库为我的单元测试创 建假货 我有一个ClassUnderTest我想测试该方法MethodToTest Data dataObject 这个方法正在调用我想伪造的接口的方法 public interface
  • css设置speak:none现在相当于aria-hidden =“true”吗?

    我只是想知道我是否应该期望 2015 年 1 月左右的浏览器和辅助技术以相当于设置 aria hidden true 的方式使用spoke none 我想指出一些半不透明的文本应该被忽略 并且想知道我是否可以在一次操作中完成它 只需添加一个
  • WinRT StorageFile DisplayName 奇怪的行为

    在 Windows 8 1 上的 Windows 8 应用程序中 我使用 StorageFile 的 DisplayName 属性来获取 友好 文件名 在大多数情况下 结果是文件的名称without扩展名 但有时结果是文件名with扩展名
  • GAE Golang Gorilla mux - 404 页面未找到

    我在 GAE 中使用 gorilla mux 时遇到一些问题 当我尝试时 我发现 404 页面未找到 未调用 rootHandler 函数 未生成任何痕迹 以下是我的代码的一部分 有什么想法吗 提前考虑 func init r mux Ne
  • 动态改变背景LinearLayout

    如何动态改变LinearLayout的背景 您是否尝试过其中之一 yourLayout setBackgroundColor int color yourLayout setBackgroundDrawable Drawable d you
  • 如何使用 Python 访问 Outlook 收件箱中的子文件夹

    我在 Outlook 中创建了一条规则 将来自特定发件人的所有传入邮件移至收件箱中的子文件夹 Like Inbox Subfolder 我写了一段代码 import win32com client outlook win32com clie
  • git - 有日志提交但缺少 .sln 文件,因此无法打开项目 - 如何恢复

    有什么方法可以使用 git 恢复我的项目文件吗 这是场景 我在一个分支机构工作了几天 该分支从未被推送到远程仓库 所以它完全是本地的 我最终丢失了 sln 解决方案文件 因此我无法再打开该项目 但在项目目录中我仍然有 git 目录 如果我发
  • ARView 黑屏

    我正在尝试以编程方式实例化 ARView 这是我的视图控制器代码 import Foundation import UIKit import RealityKit class ARViewController UIViewControlle
  • XPath 轴是否尊重 Xslt 排序?

    如果我像这样调用 xslt 模板
  • 如何在 Windows 上更改 npm 的缓存路径(或完全禁用缓存)?

    我已经在我的 Windows 7 x64 开发机器上安装了 Node js 手动方式 mkdir C Devel nodejs cd C Devel nodejs set NODE PATH CD setx M PATH PATH NODE
  • 用泛型 T 扩展类

    在 TypeScript 中 有没有办法用泛型类型扩展类 请参阅我的 假设场景 示例 其中我希望我的类具有名为 品种 或其他 的属性 interface dog breed string export class animal
  • 当我在 NetLogo 中取消世界环绕时,为什么会出现错误?

    我下载了一个工作模型 并正在对其进行调整以适应我的标准 我想禁用世界环绕 以便海龟在移动到初始屏幕时受到限制 但是当我这样做时 我收到一条错误消息 告诉我 OF预期输入是海龟代理集或补丁代理集或海龟或补丁 但没有得到任何人 欢迎来到 Sta
  • 如何使用多语言/多个index.html文件正确设置React Router?

    我正在构建一个 Web 应用程序 使用最新的 React 和 React Router 版本 就我而言 我的应用程序支持多种语言 并且由于索引 我们为每种语言都有单独的条目 html 文件 因此 对于像 myapp com 这样的 url
  • 使用 Shell 脚本根据条件编辑和更新 XML

    我想改变一个值 即value false 使用 Shell 脚本 我该如何去做呢 请向我提供任何建议 我尝试过 使用过的 我使用命令 gt sed s true false g ml xml Problem But all true内容改变
  • 为什么分配给多个目标(标识符/属性)会产生奇怪的结果?

    我有一些这样的代码 def foo bar initial bar Bar while True next bar Bar bar next bar next bar bar next bar return initial bar 其目的是
  • 具有 Room 和状态处理功能的 Kotlin 协程流

    我正在尝试新的协程流程 我的目标是创建一个简单的存储库 可以从 Web api 获取数据并将其保存到数据库 还可以从数据库返回流程 我使用 room 和 firebase 作为 Web api 现在一切看起来都非常简单 直到我尝试将来自 a
  • OCaml:用消息断言

    又是另一个问题 P 我不太确定是否应该将其发布在这里或 OCaml 邮件列表上 但我首先尝试这样做 我喜欢断言语句 然而 我发现如果没有附加消息 错误消息几乎毫无用处 第 XXX 行的断言冲突 很好 但实际上出了什么问题 我认为断言的一个很