I wonder how people handle nonexhaustive match warnings in the SML/NJ compiler. For example, I may define a datatype
datatype DT = FOO of int | BAR of string
and then have a function that I know only takes FOOs
fun baz (FOO n) = n + 1
The compiler will give a warning
stdIn:1.5-1.24 Warning: match nonexhaustive FOO n => ... val baz = fn : DT -> int
I don't wanna see warnings for incomplete matches I did on purpose, because then I have to scan through the output to find a warning that might actually be a bug. I can write the function like this
fun baz (FOO n) = n + 1
| baz _ = raise Fail "baz"
but this clutters the code. What do people usually do in this situation?