のは、私が同じコンストラクタで2つの値が作成されているかどうかをチェックする方法は?
type t = A of int | B of int
let xx = A(2);;
let yy = A(3);;
を持っていると私はXXとYYのコンストラクタが等しいかどうかをテストしたいとしましょう、 はこれを行う簡単な方法は何ですか?
match xx, yy with
| A _, A _
| B _, B _ -> true
| (A _ | B _), _ -> false
が、私は認識していないよ。その代わり、やや単純、上記にタイプであり、多くのコンストラクタは
これは間違いありませんが、 '_、_'や '(A _ | B _)、_ 'の使用を避ける方が賢明です。このようにして、コンストラクターが変更された場合、コンパイラーはエラーを見つけるのに役立ちます。これについての議論があります。http://stackoverflow.com/questions/4346901/suggestion-for-solving-fragile-pattern-matching – nlucaroni
これは、値のタグを比較することによって行うことができます(適切な型の注釈では安全です)。 – ygrek
@niucaroni:確かに、非常に良い点。私は答えにそれを組み込むために自由を取った。 – akoprowski