Overloading
<language> (Or "Operator overloading").
Use of a single symbol to represent operators with different argument types, e.g. "-", used either, as a
monadic operator to negate an expression, or as a
dyadic operator to return the difference between two expressions.
Another example is "+" used to add either integers or
floating-point numbers.
Overloading is also known as ad-hoc
polymorphism.
User-defined operator overloading is provided by several modern programming languages, e.g.
C++'s
class system and the
functional programming language
Haskell's
type classes.