Вы можете иметь только один, когда охранник на стрелку / результат, так что-то вроде этого будет работать:
let id1 = 0
match p1, p2 with
| Fluid, Particle id2
| Interface _, Particle id2 when id1 = id2 -> doSomething()
| _ -> doSomething()
(обратите внимание, что в этом случае оба элемента в или должны связывать один и тот же набор идентификаторов, чтобы в любом случае ни один идентификатор не оставался неинициализированным)
или альтернативно добавить второе действие / результат:
match p1, p2 with
| Fluid, Particle id2 when id1 = id2 -> doSomething()
| Interface _, Particle id2 when id1 = id2 -> doSomething()
| _ -> doSomething()