Существуют ли какие-либо творческие способы работы с .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