kill(all);

x       :pippo; 
pippo   :pluto;
pluto   :paperino;
paperino:clarabella;

x;

ev(x);

ev(ev(x));

ev(x,eval);

ev(ev(ev(x)));

ev(x,eval,eval);

ev(ev(ev(ev(x))));

x,eval; /* "pluto" would be actually the expected outcome..*/

x,eval,eval; /* "paperino" would actually be the expected outcome..*/

ev(x,infeval);

x,infeval;

Be careful! If I add

clarabella:x

and I request a

x,infeval;

evaluation, I would obtain an infinite loop. Then I would have to kill and restart maxima
Maxima -> Restart Maxima

functions: assignment with ":="

fun(t) := t^2*x; /* the RHS expression evaluation is SUSPENDED at assignment stage*/

fun(2); /* the suspended evaluation is later performed at CALL stage, when the specific argument is supplied*/

functions: assignment with "define()"

define(fun(t),t^2*x);

fun(2);

functions: "lambda function" based assignmend, i.e. I create an anonymous "lambda" function, which later given a
name.

fun : lambda([t],t^2*x);

fun(2);

anyway..

fun(2),infeval;

but also

x,noeval; /* "x" was actually expected as an output*/

single quote " ' ", and double single quote " '' "

'x; /* ' inhibits the "at line read stage" evaluation of the subsequent element*/

'(x+sin(x)); /* it also works on blocks */

ev('x); /* it does not inhibits further evaluations */

''x; /* '' enforces a further "at line read stage" evaluation of the subsequent element */