You cannot distinguish between the disqualified value of union - a type Fis something other than a type int(this is not like a C-connection, where they have the same binary representation).
, , list<F> list<int>, int, A.
List.choose ( List.filter). , None ( ) Some v ( v ):
let listOfAs = List.choose (fun f ->
match f with
| A(f') -> Some f'
| _ -> None)