F#におけるenumの扱い方とその変換(キャスト)

F#でのenumの書き方がよくわからなかったんでメモ。基本、判別共有体と同様の書き方をするもんだと理解すればよい。特に、intならenum関数で指定したenumへキャストできるけど、そうじゃなかったらLanguagePrimitives.EnumOfValueを使う点がミソ。

//AB enumを生成
type AB =
    | A = 'A'
    | B = 'B'
//文字からABへ変換-1
let x : AB = LanguagePrimitives.EnumOfValue 'A'
x;;
//文字からABへ変換-2
let y = LanguagePrimitives.EnumOfValue<char, AB>('A')
y;;
//ABから文字への変換
LanguagePrimitives.EnumToValue x