In machine-oriented languages, it is usually required that both the number of function arguments and their types are known and, as soon as functions need a larger number of parameters, these are collected in some structure or class. Because this is quite inflexible, functions in Common Lisp are allowed to have a variable number of parameters of arbitrary type. Additionally, the arguments can be named with certain keywords. This means that the keyword part of the argument list has an even number of elements which appear in pairs of the form symbol/value (such a list is called a property list). This allows for a very flexible parametrization of a lot of operations.
Another possibility of flexible passing of unstructured data is
provided by the class
blackboard which is defined in the
FL.UTILITIES. Such blackboards can also be modified
which allows functions to return results via the blackboard.
Sometimes (e.g. within the generic function
several functions operate one after the other on the same blackboard
which resembles very much an assembly line.