Gs are similar to deffunctions in that
they can be used to define new procedural code directly in CLIPS,
and they can be called like any other function. However, generic
functions are much more powerful because they can be overloaded.
A generic function will do different things depending on the types
(or classes) and number of its arguments. Generic functions are
comprised of multiple components called methods,
where each method handles different cases of arguments for the
generic function. For example, you might overload the ì+î
operator to do string concatenation when it is passed strings
as arguments. However, the ì+î operator will still
perform arithmetic addition when passed numbers. There are two
methods in this example: an explicit one for strings defined by
the user and an implicit one which is the standard CLIPS arithmetic
addition operator. The return value of a generic function is the
evaluation of the last expression in the method executed. Generic
functions are covered comprehensively in Section 8.