In certain systems for
object-oriented programming such as the
Common Lisp Object System and
Dylan, a
generic function is an entity made up of all methods having the same name. Typically a
generic function itself is an instance of a class that
inherits both from
function and
standard-object. Thus generic functions are both functions (that can be called with and applied to arguments) and ordinary objects. The book
The Art of the Metaobject Protocol explains the implementation and usage of CLOS generic functions in detail.