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.