SML/NJコンパイラで非網羅的な一致警告をどのように処理するのだろうか。たとえば、データ型を定義できます
datatype DT = FOO of int | BAR of string
そして、FOOだけを取ると私が知っている機能を持っています
fun baz (FOO n) = n + 1
コンパイラは警告を出します
stdIn:1.5-1.24警告:完全に一致しない FOO n=>..。 val baz = fn:DT-> int
意図的に行った不完全な一致の警告は表示したくありません。出力をスキャンして、実際にはバグである可能性のある警告を見つける必要があるためです。このような関数を書くことができます
fun baz (FOO n) = n + 1
| baz _ = raise Fail "baz"
しかし、これはコードを乱雑にします。この状況で人々は通常何をしますか?