Forms which are lists are used to invoke a subroutine. The first element of the list defines the subroutine to be called; all further elements are arguments to be applied to that subroutine invocation.
There are several different types of subroutines available: functions, macros, special forms and autoloads. When the evaluator finds a form which is a list it tries to classify the form into one of these four types.
First of all it evaluates the first element of the list; the computed value of this element decides how the rest of the elements in the list are treated. For example, if the first element is a symbol whose value is a function, then that function is called with the other values in the list.
|• Function Call Forms:||‘Normal’ subroutines|
|• Macro Call Forms:||Source code expansions|
|• Special Forms:||Abnormal control structures|
|• Autoload Forms:||Loading subroutines from files on the fly|