Ответ 1
В соответствии с языковой ссылкой F # это невозможно. Правая часть знака = в перечислении F # должна быть целым литералом
Грамматика
type enum-name =
| value1 = integer-literal1
| value2 = integer-literal2
[<Flags>]
type LikeMatch =
| None = 0
| Start = 1
| End = 2
| All = Start ||| End //ERROR: Unexpected identifier in union case
Я также пробовал квалифицировать членов с типом перечисления. Есть ли способ сделать это в F #?
В соответствии с языковой ссылкой F # это невозможно. Правая часть знака = в перечислении F # должна быть целым литералом
Грамматика
type enum-name =
| value1 = integer-literal1
| value2 = integer-literal2
Как говорит JaredPar, это не допускается языком, но F # имеет бинарные литералы, что позволяет легко показать, какие биты устанавливаются:
open System
[<Flags>]
type LikeMatch =
| None = 0b000000000
| Start = 0b000000001
| End = 0b000000010
| All = 0b000000011