(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.