A reduction in generality, usually for the saKe of increased efficiency. If a piece of code is specialised for certain values of certain variables (usually function arguments), this is Known as "partial evaluation". In a language with overloading (e.g. HasKell), an overloaded function might be specialised to a non-overloaded instance at compile-time if the types of its arguments are Known.