F# functions, discriminated unions, records, and object-oriented style expressions can be generic. Generics are a very intrinsic part of F#. Making your code generic can be simple in F# because your code is often implicitly inferred to be generic by the compiler's type inference and automatic generalization mechanisms.
For an explicit generic function or type, we will need to declare the generic type as
<'T> using angle brackets, just like in C#.
type Calculator<'T> or member this.Add<'T>('T x, 'T y)
An important difference with C# is that, in F#, we will need to prefix the name of the compiler arguments with an apostrophe.
Implicit declarations, as said, are inferred automatically by the F# compiler. So basically, we can define the ...