It is not trivial how to handle argument passing in the lack of stack, or any dedicated storage for parameters. Consider the following examples:
fac (n):= n*fac(n-1)
fac(add(2,3))?
ack(add(fac(fac(2)+fac(1)),fac(1)),1)?
I wanted a simple solution, which still works without posing serious…