我想知道人们如何在 SML/NJ 编译器中处理非详尽的匹配警告。例如,我可以定义一个数据类型
datatype DT = FOO of int | BAR of string
然后有一个我知道只需要 FOO 的功能
fun baz (FOO n) = n + 1
编译器会给出警告
标准输入:1.5-1.24 警告:匹配非详尽
FOO n => ...
val baz = fn : DT -> int
我不想看到我故意做的不完整匹配的警告,因为我必须扫描输出以找到可能实际上是错误的警告。我可以这样写函数
fun baz (FOO n) = n + 1
| baz _ = raise Fail "baz"
但这会使代码混乱。人们在这种情况下通常会做什么?