скажем, у меня есть
type t = A of int | B of int
let xx = A(2);;
let yy = A(3);;
и я хочу проверить, равны ли конструкторы xx и yy, есть ли простой способ сделать это? Вместо того, чтобы
match xx with
A _ ->
(match yy with A _ -> true | B _ -> false)
| B _ ->
(match yy with A _ -> false | B _ -> true);;
что становится довольно грязным, когда в типе много конструкторов
_,_
и лучше использовать(A _ | B _ ), _
. Таким образом, если конструктор изменится, компилятор может помочь вам найти ошибки. Обсуждается это, stackoverflow.com /вопросы/4346901/ 29.06.2011