Глянул, там эдакая фича - переменные можно обзывать одинаково и использовать в одном when биндинге, правда набор переменных должен совпадать:
type T =
| One of int
| Two of int
| Zero
let foo t =
match t with
| One i | Two i when i = 2 -> printfn "2"
| One i when i < 2 -> printfn "ONE!!"
| _ -> printfn "ZERO!"
[<EntryPoint>]
let main _ =
let t1 = One 1
let t2 = One 2
let t3 = Two 2
[t1; t2; t3] |> List.iter foo
Console.ReadLine() |> ignore
0