4

通常、コード内の不完全なパターンについて警告を受けたいとしますが、特定の関数のパターンが不完全であることを知っていて、それで問題ないとわかっている場合があります。

GHC の警告の粒度はモジュール単位であり、特定の関数や定義に関する警告を変更する方法がないというのは本当ですか?

4

1 に答える 1

6

はい、それでも当てはまりますが、 を使用してこれを回避できますerror

f (Just a) = show a

ケースなしでNothing警告を与えるが、追加する

f Nothing = error "f: Nothing supplied as an argument. This shouldn't have happened. Oops."

警告を取り除きます。

あなたの問題の関数ごとの解決策は、決して実行されないと思われるコードをHaskellに与えて、それを静かに保つことです。

注意: あなたのコードは堅牢であり、決して起こらないことを証明できない限り、すべての不測の事態をカバーする必要があると思います. この制限を回避することはあまり良い習慣ではないと思います。

(これは便利なコンパイル時のチェックをハッキングするための広く開かれた裏口だと思うかもしれません-Wall。基本的に停止の問題を解決するので、コンパイラを責めないようにしましょう.)

于 2012-10-03T22:52:35.087 に答える