Есть ли какие-нибудь творческие способы обойти "слабые" перечисления .NET при сопоставлении с образцом? Я бы хотел, чтобы они работали аналогично DU. Вот как я сейчас с этим справляюсь. Есть какие-нибудь лучшие идеи?
[<RequireQualifiedAccess>]
module Enum =
let unexpected<'a, 'b, 'c when 'a : enum<'b>> (value:'a) : 'c = //'
failwithf "Unexpected enum member: %A: %A" typeof<'a> value //'
match value with
| ConsoleSpecialKey.ControlC -> ()
| ConsoleSpecialKey.ControlBreak -> ()
| _ -> Enum.unexpected value //without this, gives "incomplete pattern matches" warning