Common Lisp combines object-oriented, functional, and procedural programming within a single, unified system. Where this can be done, significant benefits arise from sharing a common type system, a common toolset, and so forth. These technical advantages translate into important practical benefits such as enabling groups with moderately differing needs to share a language rather than having to apply a number of specialized languages.
Functional programming describes all computer operations as mathematical functions on inputs.
Typically, a function can be created and returned from other functions as first-class data. This function object may then be passed as input to other functions, perhaps be composed with other functions, and eventually, applied to inputs to produced a value. Objects can be defined in terms of functions that encapsulate certain data, and operations on objects can be defined by functions encapsulating the objects. Purely functional languages do not have assignment, as all side-effecting can be defined in terms of functions that encapsulate the changed data. Procedural languages essentially perform everything as side-effects to data structures.