можем перечислять несколько вариантов таким образом:
match x with | 1 | 3 | 8 -> "good" | _ -> "bad"
если же мэтчим опциональный тип с каким-то условием, было бы классно писать что-то типа
match option with | None | Some when <...> -> "good" | _ -> "bad", но компилироваться это не хочет, приходится писать
match option with | None -> "good"| Some when <...> -> "good" | _ -> "bad", т.е. если вместо "good" будет что-то достаточно большое, придётся либо копипастить, либо выносить в функцию (но кода всё равно становится больше, его модификация требует лезть уже как минимум в два места)
можно ли как-то это обойти штатными методами?
match option with | None | Some when <...> -> "good" | _ -> "bad"
When относится ко всей группе, если нет возможности его через скобочки ограничить в рамках одного варианта (не пробовал), юзай шаблоны.
match x with Option.None | Option.Some _ when true ->"good" | _-> "bad"
Обсуждают сегодня