Instantiation
Given a generic function, we can execute it in two ways. The first is just passing the arguments, and letting the compiler identify the
type parameter corresponding.
The second form is called instantiation, and it happens when, when calling a generic function, you provide the expected type parameter for that execution, and the compiler guarantees that the parameters passed the satisfy.
// Type parameter implicit
MyFunc(1, 2)
// Instantiation
MyFunc[string]("1", "2")
For more information about Instantiation, see an article by clicking
here