Методы дискриминации членов профсоюза

Я хочу определить метод, разделяемый всеми членами дискриминационного союза. В настоящее время я реализовал это, как это, но это кажется действительно не элегантным - конечно, есть лучший способ. Предложения?

type A = 
   {AData:string}
   member this.SharedMethod (x:float) : int= ...
type B =
   {BData:float}
   member this.SharedMethod (x:float) : int= ...
type AB =
| A of A
| B of B

let CallSharedMethod (ab:AB) x =
   match ab with
   | AB.A(a') -> a'.SharedMethod x
   | AB.B(b') -> b'.SharedMethod x

Ответы на вопрос(2)

Ваш ответ на вопрос