В идентификатор y
должен кортеж целиком матчиться.
let inline (|Eq|_|) v2 v1 = if v1 = v2 then Some() else None
let inline (|Exactly3|_|) lst =
match lst with
| [ x, y, z ] -> Some (x, y, z)
| _ -> None
let test() lst =
match lst with
| Exactly3 (x, Eq 50 as y, z) -> ()
| _ -> ()