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
*x*^{2}−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 *x*^{2}−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`).