How do you go about deciding which of the following two representations (in F# syntax) is the right choice in a particular situation?
type Choice = A of string | B of string
Or:
type ChoiceKind = A | B
type Choice = { Kind: ChoiceKind; Value: string }
I'm deliberately avoiding giving a more specific example, as either approach can "feel more natural" in a particular scenario; I'm interested in the general reasoning that goes into the design choice.