One case where we have already encountered the use of complicated expressions as heads is in working with pure functions in "Pure Functions". By giving Function[vars,body] as the head of an expression, you specify a function of the arguments to be evaluated.
There are several constructs in the Wolfram Language which work much like pure functions, but which represent specific kinds of functions, typically numerical ones. In all cases, the basic mechanism involves giving a head which contains complete information about the function you want to use.
|InterpolatingFunction[data][args]||approximate numerical function (generated by Interpolation and NDSolve)|
|CompiledFunction[data][args]||compiled numerical function (generated by Compile)|
|LinearSolveFunction[data][vec]||matrix solution function (generated by LinearSolve)|
As one example, consider the operation of differentiation. As discussed in "The Representation of Derivatives", an expression like f' represents a derivative function, obtained from f by applying a functional operator to it. In the Wolfram Language, f' is represented as Derivative[f]: the "functional operator" Derivative is applied to f to give another function, represented as f'.