The proper conversion is determined by context. Coercion is semantic. When the arguments are of different types, the integer argument is coerced to type real. Integers are always coerced to type real before the operator is applied. Most common in functional programming languages.
Uniformity is achieved by use of type parameters or variables.
Executes the same code for arguments of any admissible type. Consider again the definition of len from above. Int Thus len takes a list with elements of type a and returns an integer. We call a a type variable since any valid type can be Inclusion polymorphism Occurs in languages that allow subtypes and inheritance. An instance of a subtype can be manipulated by the same functions that operate on instances of the supertype.