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/