The difference between a function and an expression

### 5.16.1 The difference between a function and an expression

A function f is defined for example by :
f(x):=x`^`2-1 or by f:=x->x`^`2-1
that is to say, for all x, f(x) is equal to the expression x2−1. In that case, to have the value of f for x=2, input :f(2).
But if the input is g:=x`^`2-1, then g is a variable where the expression x2−1 is stored. In that case, to have the value of g for x=2, input : subst(g,x=2) (g is an expression depending on x).

When a command expects a function as argument, this argument should be either the definition of the function (e.g. x->x`^`2-1) or a variable name assigned to a function (e.g. f previously defined by e.g. f(x):=x`^`2-1).
When a command expects an expression as argument, this argument should be either the definition of the expression (for example x`^`2-1), or a variable name assigned to an expression (e.g. g previously defined, for example, by g:=x`^`2-1), or the evaluation of a function. e.g. f(x) if f is a previously defined function, for example, by f(x):=x`^`2-1).