Ocaml 中未使用的 let 表达式

bit*_*ugo 2 ocaml compiler-errors unused-variables unused-functions

为什么我无法在 Ocaml 中编译包含未使用变量的程序?

let foo a b = a + b

-- 错误(警告 32 [未使用值声明]):未使用值 foo。

oct*_*ron 6

您可以通过自定义沙丘文件中的标志来禁用将警告升级为错误:

 (flags (:standard -warn-error "-unused-value-declaration"))
Run Code Online (Sandbox Code Playgroud)

或使用文件本身的属性禁用升级

[@@@warnerror "-unused-value-declaration"]
Run Code Online (Sandbox Code Playgroud)

或者只是为了值:

let[@warnerror "-unused-value-declaration"] x = ()
Run Code Online (Sandbox Code Playgroud)

(您可以使用-w@warning来禁用警告本身,而不是将其升级为错误。)

还可以使用前导下划线来指示有意不使用某个值的意图:

let _x = ()
Run Code Online (Sandbox Code Playgroud)

尽管如此,我发现此警告通常有助于避免源代码中的死代码,并且我不建议禁用它。