haskell-jp / questions #99 at 2021-10-30 11:19:12 +0900

既出かもしれませんが
Haskellでパターンマッチを実行するとき想定外のパターンはエラー(コンパイルエラーか実行時エラー)にしたりすることはできるのでしょうか?
よくパターンマッチを使うと以下のような警告が出るのですが、そもそもありえないパターンが入ってたりするのです。
Warning: Pattern match(es) are non-exhaustive
型としてありえないものはコンパイルエラーになりますが値としてありえないものはコンパイルエラーにはなりませんね
error 関数を使うなどして実行時エラーにしたりします
残念ながら「そもそもありえないパターン」かどうかをコンパイラーは判断できないので、kakkunさんの仰るとおり、あり得ないパターンの箇所で error 関数などを使って実行時エラーにするしかないです。「Assertion failure」とか「Impossible」みたいなメッセージで「このエラーが起こると言うことは何かおかしい!バグかも!」ということを明示するのがおすすめです。
なるほど:thinking_face:
とすると出来るだけ型にしといて、型にできないところはerror使う感じにしようかな
ありがとうございます