编译时是否可以使ocamlc
生成自定义警告?我有一些半完成的代码,我想提醒它还没有完成。举个例子:我想写一个reverse
函数。我现在无法解决如何编写代码的问题,所以我只想写一些类型检查。
let reverse xs = xs
我想写点像
let reverse xs = Compiler_Warning "TODO: reverse"; xs
这可能吗?我有兴趣听到任何获得类似结果的技巧。
答案 0 :(得分:3)
常见的诀窍是使用failwith "not implemented"
或assert false
引发异常。
如果未实现的功能中有未使用的参数,则会发出警告。虽然,默认情况下它们是禁用的。所以你需要添加-Wall选项来启用它们。
此外,您只需在实现中添加一个有意使用的变量,例如:
let reverse xs =
let unimplemented = () in
xs
答案 1 :(得分:1)
您可能对cppo pre-processor感兴趣,{{3}}将自己描述为OCaml程序的cpp
等效项,并具有#warning
指令。它似乎可以通过opam
获得。
答案 2 :(得分:1)
您可以使用扩展点执行此操作,目前该计划以类似的方式提交到annotate deprecated functions。正如ivg所提到的,failwith "TODO"
是你想要的标准,但你不会得到编译时警告 - 尽管你可能会在函数中为每个参数获得未使用的参数警告。