ocaml - OCaml 中的静态(编译时)断言?

标签 ocaml

OCaml 中有这样的工具吗(例如,类似于 C++ 和 D)?
例如,当我定义我的函数时:

let my_func arg1 arg2 =
    static_assert (arg1 < arg2);
    (* rest of the function's body *)  

稍后尝试像这样调用它:

my_func 4 1

我会在编译时遇到断言失败吗?

如果 OCaml 中没有这样的工具,是否可以使用其他现有工具来实现它?

最佳答案

目前还没有。

OCaml 编译器执行的唯一静态检查是类型检查(这将使您轻松消除在求和类型上可能犯的许多错误)。通过不断的传播,您的测试可以静态地转换为立即引发异常,因此也许可以修补编译器以在这种情况下打印警告(恕我直言,这不是一个简单的修补程序)。

有一些工具可以帮助您查找代码中的错误,您可以查看 that post在 caml-list 上引用当前可用的 OCaml 帮助工具。

关于ocaml - OCaml 中的静态(编译时)断言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28437248/

相关文章:

ocaml - OCaml 2 和 3 之间的差异

ocaml,能够在值更改时触发编译错误

gcc - 去掉cpp生成的注释

compare - 变体的结构比较

list - 压缩矩形列表

recursion - OCaml 中的匿名递归函数

ocaml - 返回列表中所有值的递归函数(在 OCaml 中)

ocaml - 为什么不能对超集进行多态变体的封闭子集类型检查?

c++ - 我的编译器在 C/C++、OCaml 和 F# 之间犹豫不决

functional-programming - OCaml:首先应用第二个参数(高阶函数)