You can think of an expression like f[x] as being formed by applying an operator f to the expression x. You can think of an expression like f[g[x]] as the result of composing the operators f and g, and applying the result to x.
|Composition[f,g,…]||the composition of functions f, g, …|
|RightComposition[f,g,…]||the composotion on the right of f, g, …|
|InverseFunction[f]||the inverse of a function f|
|Identity||the identity function|
RightComposition composes in the opposite order.
Using Through, you can convert the expression to a more explicit form.
The Wolfram System does not automatically apply the separate pieces of the operator to an expression.
You can use Through to apply the operator.
|Identity[expr]||the identity function|
|Through[p[f1,f2][x],q]||give p[f1[x], f2[x]] if p is the same as q|
|Operate[p,f[x],n]||apply p at level n in f|
|MapAll[p,expr,Heads->True]||apply p to all parts of expr, including heads|
Functions like Expand do not automatically go inside heads of expressions.
You can use Operate to apply a function specifically to the head of an expression.