Possibilities of abstractions
The article compares ways to abstract multiple implementations in F#: function records, interfaces, supplied functions, and discriminated unions. It weighs brevity, naming, optional parameters, documentation, and state handling.